mirror of
https://github.com/postgres/postgres.git
synced 2025-08-28 18:48:04 +03:00
68 lines
1.7 KiB
Plaintext
68 lines
1.7 KiB
Plaintext
/* $PostgreSQL: pgsql/src/interfaces/ecpg/test/num_test.pgc,v 1.11 2006/03/11 04:38:40 momjian Exp $ */
|
|
|
|
#include <stdio.h>
|
|
#include <pgtypes_numeric.h>
|
|
#include <decimal.h>
|
|
|
|
int
|
|
main(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;
|
|
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 numeric(14,7));
|
|
|
|
value1 = PGTYPESnumeric_new();
|
|
PGTYPESnumeric_from_int(1407, value1);
|
|
text = PGTYPESnumeric_to_asc(value1, -1);
|
|
printf("long = %s\n", text);
|
|
|
|
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);
|
|
|
|
PGTYPESnumeric_sub(res, value2, res);
|
|
text = PGTYPESnumeric_to_asc(res, -1);
|
|
printf("sub = %s\n", text);
|
|
|
|
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);
|
|
|
|
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);
|
|
|
|
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);
|
|
|
|
exec sql rollback;
|
|
exec sql disconnect;
|
|
|
|
if (dbgs != NULL)
|
|
fclose(dbgs);
|
|
|
|
return (0);
|
|
}
|
|
|