| #include <locale.h> |
| #include <string.h> |
| #include <stdlib.h> |
| |
| #include <pgtypes_date.h> |
| #include <pgtypes_interval.h> |
| #include <pgtypes_numeric.h> |
| #include <pgtypes_timestamp.h> |
| |
| exec sql whenever sqlerror sqlprint; |
| |
| exec sql include sqlca; |
| exec sql include ../regression; |
| |
| int |
| main (void) |
| { |
| EXEC SQL BEGIN DECLARE SECTION; |
| int i = 1, j; |
| int *did = &i; |
| short a[10] = {9,8,7,6,5,4,3,2,1,0}; |
| timestamp ts[10]; |
| date d[10]; |
| interval in[10]; |
| numeric n[10]; |
| char text[25] = "klmnopqrst"; |
| char *t = (char *)malloc(11); |
| double f; |
| EXEC SQL END DECLARE SECTION; |
| |
| strcpy(t, "0123456789"); |
| setlocale(LC_ALL, "C"); |
| |
| ECPGdebug(1, stderr); |
| |
| for (j = 0; j < 10; j++) { |
| char str[28]; |
| numeric *value; |
| interval *inter; |
| |
| sprintf(str, "2000-1-1 0%d:00:00", j); |
| ts[j] = PGTYPEStimestamp_from_asc(str, NULL); |
| sprintf(str, "2000-1-1%d\n", j); |
| d[j] = PGTYPESdate_from_asc(str, NULL); |
| sprintf(str, "%d hours", j+10); |
| inter = PGTYPESinterval_from_asc(str, NULL); |
| in[j] = *inter; |
| value = PGTYPESnumeric_new(); |
| PGTYPESnumeric_from_int(j, value); |
| n[j] = *value; |
| } |
| |
| EXEC SQL CONNECT TO REGRESSDB1; |
| |
| EXEC SQL SET AUTOCOMMIT = ON; |
| |
| EXEC SQL BEGIN WORK; |
| |
| EXEC SQL CREATE TABLE test (f float, i int, a int[10], text char(10), ts timestamp[10], n numeric[10], d date[10], inter interval[10]); |
| |
| EXEC SQL INSERT INTO test(f,i,a,text,ts,n,d,inter) VALUES(404.90,3,'{0,1,2,3,4,5,6,7,8,9}','abcdefghij',:ts,:n,:d,:in); |
| |
| EXEC SQL INSERT INTO test(f,i,a,text,ts,n,d,inter) VALUES(140787.0,2,:a,:text,:ts,:n,:d,:in); |
| |
| EXEC SQL INSERT INTO test(f,i,a,text,ts,n,d,inter) VALUES(14.07,:did,:a,:t,:ts,:n,:d,:in); |
| |
| EXEC SQL COMMIT; |
| |
| for (j = 0; j < 10; j++) { |
| ts[j] = PGTYPEStimestamp_from_asc("1900-01-01 00:00:00", NULL); |
| d[j] = PGTYPESdate_from_asc("1900-01-01", NULL); |
| in[j] = *PGTYPESinterval_new(); |
| n[j] = *PGTYPESnumeric_new(); |
| } |
| EXEC SQL BEGIN WORK; |
| |
| EXEC SQL SELECT f,text |
| INTO :f,:text |
| FROM test |
| WHERE i = 1; |
| |
| printf("Found f=%f text=%10.10s\n", f, text); |
| |
| f=140787; |
| EXEC SQL SELECT a,text,ts,n,d,inter |
| INTO :a,:t,:ts,:n,:d,:in |
| FROM test |
| WHERE f = :f; |
| |
| for (i = 0; i < 10; i++) |
| printf("Found a[%d] = %d ts[%d] = %s n[%d] = %s d[%d] = %s in[%d] = %s\n", i, a[i], i, PGTYPEStimestamp_to_asc(ts[i]), i, PGTYPESnumeric_to_asc(&(n[i]), -1), i, PGTYPESdate_to_asc(d[i]), i, PGTYPESinterval_to_asc(&(in[i]))); |
| |
| printf("Found text=%10.10s\n", t); |
| |
| EXEC SQL SELECT a |
| INTO :text |
| FROM test |
| WHERE f = :f; |
| |
| printf("Found text=%s\n", text); |
| |
| EXEC SQL DROP TABLE test; |
| |
| EXEC SQL COMMIT; |
| |
| EXEC SQL DISCONNECT; |
| |
| free(t); |
| |
| return 0; |
| } |