num_test.pgc
来自「postgresql8.3.4源码,开源数据库」· PGC 代码 · 共 96 行
PGC
96 行
#include <stdio.h>#include <stdlib.h>#include <pgtypes_numeric.h>#include <decimal.h>exec sql include ../regression;/*NOTE: This file has a different expect file for regression tests on MinGW32*/intmain(void){ char *text="error\n"; numeric *value1, *value2, *res; exec sql begin declare section; numeric(14,7) *des; /* = {0, 0, 0, 0, 0, NULL, NULL} ; */ exec sql end declare section; double d; long l1, l2; int i; ECPGdebug(1, stderr); exec sql whenever sqlerror do sqlprint(); exec sql connect to REGRESSDB1; exec sql set autocommit = off; exec sql create table test (text char(5), num numeric(14,7)); value1 = PGTYPESnumeric_new(); PGTYPESnumeric_from_int(1407, value1); text = PGTYPESnumeric_to_asc(value1, -1); printf("from int = %s\n", text); free(text); PGTYPESnumeric_free(value1); value1 = PGTYPESnumeric_from_asc("2369.7", NULL); value2 = PGTYPESnumeric_from_asc("10.0", NULL); res = PGTYPESnumeric_new(); PGTYPESnumeric_add(value1, value2, res); text = PGTYPESnumeric_to_asc(res, -1); printf("add = %s\n", text); free(text); PGTYPESnumeric_sub(res, value2, res); text = PGTYPESnumeric_to_asc(res, -1); printf("sub = %s\n", text); free(text); PGTYPESnumeric_free(value2); des = PGTYPESnumeric_new(); PGTYPESnumeric_copy(res, des); exec sql insert into test (text, num) values ('test', :des); value2 = PGTYPESnumeric_from_asc("2369.7", NULL); PGTYPESnumeric_mul(value1, value2, res); PGTYPESnumeric_free(value2); exec sql select num into :des from test where text = 'test'; PGTYPESnumeric_mul(res, des, res); text = PGTYPESnumeric_to_asc(res, -1); printf("mul = %s\n", text); free(text); PGTYPESnumeric_free(des); value2 = PGTYPESnumeric_from_asc("10000", NULL); PGTYPESnumeric_div(res, value2, res); text = PGTYPESnumeric_to_asc(res, -1); PGTYPESnumeric_to_double(res, &d); printf("div = %s %e\n", text, d); value1 = PGTYPESnumeric_from_asc("2E7", NULL); value2 = PGTYPESnumeric_from_asc("14", NULL); i = PGTYPESnumeric_to_long(value1, &l1) | PGTYPESnumeric_to_long(value2, &l2); printf("to long(%d) = %ld %ld\n", i, l1, l2); free(text); PGTYPESnumeric_free(value1); PGTYPESnumeric_free(value2); PGTYPESnumeric_free(res); exec sql rollback; exec sql disconnect; return (0);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?