/* Processed by ecpg (4.2.1) */ /* These include files are added by the preprocessor */ #include #include #include #include /* End of automatic include section */ #line 1 "test2.pgc" #include #include #line 1 "./header_test.h" #include "stdlib.h" static void Finish(char *msg) { fprintf(stderr, "Error in statement '%s':\n", msg); sqlprint(); /* finish transaction */ { ECPGtrans(__LINE__, NULL, "rollback");} #line 10 "./header_test.h" /* and remove test table */ { ECPGdo(__LINE__, 0, 1, NULL, "drop table meskes ", ECPGt_EOIT, ECPGt_EORT);} #line 13 "./header_test.h" { ECPGtrans(__LINE__, NULL, "commit");} #line 14 "./header_test.h" { ECPGdisconnect(__LINE__, "CURRENT");} #line 16 "./header_test.h" exit(-1); } static void warn(void) { fprintf(stderr, "Warning: At least one column was truncated\n"); } /* exec sql whenever sqlerror do Finish ( msg ) ; */ #line 29 "./header_test.h" /* exec sql whenever sql_warning do warn ( ) ; */ #line 32 "./header_test.h" #line 4 "test2.pgc" #line 1 "./../regression.h" #line 5 "test2.pgc" /* exec sql type c is char reference */ #line 7 "test2.pgc" typedef char* c; /* exec sql type ind is union { #line 10 "test2.pgc" int integer ; #line 10 "test2.pgc" short smallint ; } */ #line 10 "test2.pgc" typedef union { int integer; short smallint; } ind; #define BUFFERSIZ 8 /* exec sql type str is [ BUFFERSIZ ] */ #line 14 "test2.pgc" /* declare cur cursor for select name , born , age , married , children from meskes */ #line 17 "test2.pgc" int main (void) { struct birthinfo { #line 22 "test2.pgc" long born ; #line 22 "test2.pgc" short age ; } ; #line 22 "test2.pgc" /* exec sql begin declare section */ #line 26 "test2.pgc" struct personal_struct { #line 24 "test2.pgc" struct varchar_name { int len; char arr[ BUFFERSIZ ]; } name ; #line 25 "test2.pgc" struct birthinfo birth ; } personal , * p ; #line 29 "test2.pgc" struct personal_indicator { #line 27 "test2.pgc" int ind_name ; #line 28 "test2.pgc" struct birthinfo ind_birth ; } ind_personal , * i ; #line 30 "test2.pgc" ind ind_children ; #line 31 "test2.pgc" char * query = "select name, born, age, married, children from meskes where name = :var1" ; /* exec sql end declare section */ #line 32 "test2.pgc" #line 34 "test2.pgc" char * married = NULL ; #line 34 "test2.pgc" #line 35 "test2.pgc" float ind_married ; #line 35 "test2.pgc" #line 36 "test2.pgc" ind children ; #line 36 "test2.pgc" /* exec sql var ind_married is long */ #line 38 "test2.pgc" char msg[128]; ECPGdebug(1, stderr); strcpy(msg, "connect"); { ECPGconnect(__LINE__, 0, "regress1" , NULL,NULL , NULL, 0); #line 45 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 45 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 45 "test2.pgc" strcpy(msg, "create"); { ECPGdo(__LINE__, 0, 1, NULL, "create table meskes ( name char ( 8 ) , born integer , age smallint , married date , children integer ) ", ECPGt_EOIT, ECPGt_EORT); #line 48 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 48 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 48 "test2.pgc" strcpy(msg, "insert"); { ECPGdo(__LINE__, 0, 1, NULL, "insert into meskes ( name , married , children ) values( 'Petra' , '19900404' , 3 )", ECPGt_EOIT, ECPGt_EORT); #line 51 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 51 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 51 "test2.pgc" { ECPGdo(__LINE__, 0, 1, NULL, "insert into meskes ( name , born , age , married , children ) values( 'Michael' , 19660117 , 35 , '19900404' , 3 )", ECPGt_EOIT, ECPGt_EORT); #line 52 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 52 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 52 "test2.pgc" { ECPGdo(__LINE__, 0, 1, NULL, "insert into meskes ( name , born , age ) values( 'Carsten' , 19910103 , 10 )", ECPGt_EOIT, ECPGt_EORT); #line 53 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 53 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 53 "test2.pgc" { ECPGdo(__LINE__, 0, 1, NULL, "insert into meskes ( name , born , age ) values( 'Marc' , 19930907 , 8 )", ECPGt_EOIT, ECPGt_EORT); #line 54 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 54 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 54 "test2.pgc" { ECPGdo(__LINE__, 0, 1, NULL, "insert into meskes ( name , born , age ) values( 'Chris' , 19970923 , 4 )", ECPGt_EOIT, ECPGt_EORT); #line 55 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 55 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 55 "test2.pgc" strcpy(msg, "commit"); { ECPGtrans(__LINE__, NULL, "commit"); #line 58 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 58 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 58 "test2.pgc" strcpy(msg, "open"); { ECPGdo(__LINE__, 0, 1, NULL, "declare cur cursor for select name , born , age , married , children from meskes ", ECPGt_EOIT, ECPGt_EORT); #line 61 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 61 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 61 "test2.pgc" /* exec sql whenever not found break ; */ #line 63 "test2.pgc" p=&personal; i=&ind_personal; memset(i, 0, sizeof(ind_personal)); while (1) { strcpy(msg, "fetch"); { ECPGdo(__LINE__, 0, 1, NULL, "fetch cur", ECPGt_EOIT, ECPGt_varchar,&(p->name),(long)BUFFERSIZ,(long)1,sizeof(struct varchar_name), ECPGt_int,&(i->ind_name),(long)1,(long)1,sizeof(int), ECPGt_long,&(p->birth.born),(long)1,(long)1,sizeof(long), ECPGt_long,&(i->ind_birth.born),(long)1,(long)1,sizeof(long), ECPGt_short,&(p->birth.age),(long)1,(long)1,sizeof(short), ECPGt_short,&(i->ind_birth.age),(long)1,(long)1,sizeof(short), ECPGt_char,&(married),(long)0,(long)1,(1)*sizeof(char), ECPGt_long,&(ind_married),(long)1,(long)1,sizeof(long), ECPGt_int,&(children.integer),(long)1,(long)1,sizeof(int), ECPGt_short,&(ind_children.smallint),(long)1,(long)1,sizeof(short), ECPGt_EORT); #line 70 "test2.pgc" if (sqlca.sqlcode == ECPG_NOT_FOUND) break; #line 70 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 70 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 70 "test2.pgc" printf("%8.8s", personal.name.arr); if (i->ind_birth.born >= 0) printf(", born %ld", personal.birth.born); if (i->ind_birth.age >= 0) printf(", age = %d", personal.birth.age); if ((long)ind_married >= 0) printf(", married %s", married); if (ind_children.smallint >= 0) printf(", children = %d", children.integer); putchar('\n'); free(married); married = NULL; } strcpy(msg, "close"); { ECPGdo(__LINE__, 0, 1, NULL, "close cur", ECPGt_EOIT, ECPGt_EORT); #line 87 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 87 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 87 "test2.pgc" /* and now a same query with prepare */ { ECPGprepare(__LINE__, "MM" , query); #line 90 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 90 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 90 "test2.pgc" /* declare prep cursor for ? */ #line 91 "test2.pgc" strcpy(msg, "open"); { ECPGdo(__LINE__, 0, 1, NULL, "declare prep cursor for ?", ECPGt_char_variable,(ECPGprepared_statement("MM")),(long)1,(long)1,(1)*sizeof(char), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_const,"'Petra'",(long)7,(long)1,strlen("'Petra'"), ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT); #line 94 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 94 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 94 "test2.pgc" /* exec sql whenever not found break ; */ #line 96 "test2.pgc" while (1) { strcpy(msg, "fetch"); { ECPGdo(__LINE__, 0, 1, NULL, "fetch in prep", ECPGt_EOIT, ECPGt_varchar,&(personal.name),(long)BUFFERSIZ,(long)1,sizeof(struct varchar_name), ECPGt_int,&(ind_personal.ind_name),(long)1,(long)1,sizeof(int), ECPGt_long,&(personal.birth.born),(long)1,(long)1,sizeof(long), ECPGt_long,&(ind_personal.ind_birth.born),(long)1,(long)1,sizeof(long), ECPGt_short,&(personal.birth.age),(long)1,(long)1,sizeof(short), ECPGt_short,&(ind_personal.ind_birth.age),(long)1,(long)1,sizeof(short), ECPGt_char,&(married),(long)0,(long)1,(1)*sizeof(char), ECPGt_long,&(ind_married),(long)1,(long)1,sizeof(long), ECPGt_int,&(children.integer),(long)1,(long)1,sizeof(int), ECPGt_short,&(ind_children.smallint),(long)1,(long)1,sizeof(short), ECPGt_EORT); #line 100 "test2.pgc" if (sqlca.sqlcode == ECPG_NOT_FOUND) break; #line 100 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 100 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 100 "test2.pgc" printf("%8.8s", personal.name.arr); if (ind_personal.ind_birth.born >= 0) printf(", born %ld", personal.birth.born); if (ind_personal.ind_birth.age >= 0) printf(", age = %d", personal.birth.age); if ((long)ind_married >= 0) printf(", married %s", married); if (ind_children.smallint >= 0) printf(", children = %d", children.integer); putchar('\n'); } free(married); strcpy(msg, "close"); { ECPGdo(__LINE__, 0, 1, NULL, "close prep", ECPGt_EOIT, ECPGt_EORT); #line 116 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 116 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 116 "test2.pgc" strcpy(msg, "drop"); { ECPGdo(__LINE__, 0, 1, NULL, "drop table meskes ", ECPGt_EOIT, ECPGt_EORT); #line 119 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 119 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 119 "test2.pgc" strcpy(msg, "commit"); { ECPGtrans(__LINE__, NULL, "commit"); #line 122 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 122 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 122 "test2.pgc" strcpy(msg, "disconnect"); { ECPGdisconnect(__LINE__, "CURRENT"); #line 125 "test2.pgc" if (sqlca.sqlwarn[0] == 'W') warn ( ); #line 125 "test2.pgc" if (sqlca.sqlcode < 0) Finish ( msg );} #line 125 "test2.pgc" return (0); }