#include "sqltypes.h" #include $include ../regression; $define NUMBER 12; static void openit(void); static void dosqlprint(void) { printf("doSQLprint: Error: %s\n", sqlca.sqlerrm.sqlerrmc); } int main(void) { $int i = 14, loopcount; $decimal j, m, n; $string c[10]; ECPGdebug(1, stderr); $whenever sqlerror do dosqlprint(); $connect to REGRESSDB1; if (sqlca.sqlcode != 0) exit(1); $create table test(i int primary key, j int, c text); /* this INSERT works */ rsetnull(CDECIMALTYPE, (char *)&j); $insert into test (i, j, c) values (7, :j, 'test '); $commit; /* this INSERT should fail because i is a unique column */ $insert into test (i, j, c) values (7, NUMBER, 'a'); printf("INSERT: %ld=%s\n", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc); if (sqlca.sqlcode != 0) $rollback; $insert into test (i, j, c) values (:i, 1, 'a '); $commit; /* this will fail (more than one row in subquery) */ $select i from test where j=(select j from test); $rollback; /* this however should be ok */ $select i from test where j=(select j from test order by i limit 1); printf("SELECT: %ld=%s\n", sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc); if (sqlca.sqlcode != 0) $rollback; sqlca.sqlcode = 100; $declare c cursor for select * from test where i <= :i; printf ("%ld\n", sqlca.sqlcode); openit(); deccvint(0, &j); for (loopcount = 0; loopcount < 100; loopcount++) { $fetch forward c into :i, :j, :c; if (sqlca.sqlcode == 100) break; if (risnull(CDECIMALTYPE, (char *)&j)) printf("%d NULL\n", i); else { int a; dectoint(&j, &a); printf("%d %d \"%s\"\n", i, a, c); } } deccvint(7, &j); deccvint(14, &m); decadd(&j, &m, &n); $delete from test where i= :n::decimal; printf("DELETE: %ld\n", sqlca.sqlcode); $select 1 from test where i=14; printf("Exists: %ld\n", sqlca.sqlcode); $select 1 from test where i=147; printf("Does not exist: %ld\n", sqlca.sqlcode); $commit; $drop table test; $commit; $close database; return 0; } static void openit(void) { $open c; }