1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-24 14:22:24 +03:00
Files
postgres/src/interfaces/ecpg/test/num_test.pgc
2003-03-18 10:46:39 +00:00

58 lines
1.4 KiB
Plaintext

#include <stdio.h>
#include <pgtypes_numeric.h>
int
main()
{
char *text="error\n";
NumericVar *value1, *value2, *res;
exec sql begin declare section;
decimal(14,7) des = {0, 0, 0, 0, 0, NULL, NULL} ;
exec sql end declare section;
double d;
FILE *dbgs;
if ((dbgs = fopen("log", "w")) != NULL)
ECPGdebug(1, dbgs);
exec sql whenever sqlerror do sqlprint();
exec sql connect to mm;
exec sql create table test (text char(5), num decimal(14,7));
value1 = PGTYPESnew();
PGTYPESnumeric_iton(1407, value1);
text = PGTYPESnumeric_ntoa(value1);
printf("long = %s\n", text);
value1 = PGTYPESnumeric_aton("2369.7", NULL);
value2 = PGTYPESnumeric_aton("10.0", NULL);
res = PGTYPESnew();
decadd(value1, value2, res);
text = PGTYPESnumeric_ntoa(res);
printf("add = %s\n", text);
PGTYPESnumeric_sub(res, value2, res);
text = PGTYPESnumeric_ntoa(res);
printf("sub = %s\n", text);
PGTYPESnumeric_copy(res, &des);
exec sql insert into test (text, num) values ('test', :des);
value2 = PGTYPESnumeric_aton("2369.7", NULL);
PGTYPESnumeric_mul(value1, value2, res);
exec sql select num into :des from test where text = 'test';
PGTYPESnumeric_mul(res, &des, res);
text = PGTYPESnumeric_ntoa(res);
printf("mul = %s\n", text);
value2 = PGTYPESnumeric_aton("10000", NULL);
PGTYPESnumeric_div(res, value2, res);
text = PGTYPESnumeric_ntoa(res);
PGTYPESnumeric_ntod(res, &d);
printf("div = %s %e\n", text, d);
return (0);
}