diff options
Diffstat (limited to 'src/interfaces/ecpg/test/test5.pgc')
-rw-r--r-- | src/interfaces/ecpg/test/test5.pgc | 138 |
1 files changed, 89 insertions, 49 deletions
diff --git a/src/interfaces/ecpg/test/test5.pgc b/src/interfaces/ecpg/test/test5.pgc index 18e5b48971f..08fcef3e0e7 100644 --- a/src/interfaces/ecpg/test/test5.pgc +++ b/src/interfaces/ecpg/test/test5.pgc @@ -7,60 +7,100 @@ EXEC SQL typedef short mmSmallInt; EXEC SQL BEGIN DECLARE SECTION; struct TBempl - { - mmInteger idnum; - mmChar name[21]; - mmSmallInt accs; - }; +{ + mmInteger idnum; + mmChar name[21]; + mmSmallInt accs; + mmChar byte[20]; +}; EXEC SQL END DECLARE SECTION; -int main(void) +int +main (void) { -EXEC SQL BEGIN DECLARE SECTION; -struct TBempl empl; -EXEC SQL END DECLARE SECTION; -FILE *dbgs; + EXEC SQL BEGIN DECLARE SECTION; + struct TBempl empl; + char *data = "\\001\\155\\000\\212"; + union + { + mmSmallInt accs; + char t[2]; + } a; + EXEC SQL END DECLARE SECTION; + FILE *dbgs; + int i; + + if ((dbgs = fopen ("log", "w")) != NULL) + ECPGdebug (1, dbgs); + + empl.idnum = 1; + EXEC SQL connect to mm; + if (sqlca.sqlcode) + { + printf ("connect error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } + + EXEC SQL create table empl + (idnum integer, name char (20), accs smallint, byte bytea); + if (sqlca.sqlcode) + { + printf ("create error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } + + EXEC SQL insert into empl values (1, 'first user', 320,:data); + if (sqlca.sqlcode) + { + printf ("insert error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } + + EXEC SQL select name, accs, byte into:empl.name,:empl.accs,:empl.byte from empl where idnum =:empl.idnum; + if (sqlca.sqlcode) + { + printf ("select error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } + printf ("name=%s, accs=%d byte=%s\n", empl.name, empl.accs, empl.byte); + + EXEC SQL DECLARE C CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum; + EXEC SQL OPEN C; + EXEC SQL FETCH C INTO:empl.name,:empl.accs,:empl.byte; + if (sqlca.sqlcode) + { + printf ("fetch error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } -if ((dbgs = fopen("log", "w")) != NULL) - ECPGdebug(1, dbgs); - -empl.idnum = 1; -EXEC SQL connect to mm; -if (sqlca.sqlcode) - { - printf("connect error = %ld\n", sqlca.sqlcode); - exit(sqlca.sqlcode); - } + printf ("name=%s, accs=%d byte=%s\n", empl.name, empl.accs, empl.byte); -EXEC SQL create table empl - ( - idnum integer, - name char(20), - accs smallint - ); -if (sqlca.sqlcode) - { - printf("select error = %ld\n", sqlca.sqlcode); - exit(sqlca.sqlcode); - } + memset(empl.name, 0, 21L); + memset(empl.byte, '#', 20L); + EXEC SQL DECLARE B BINARY CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum; + EXEC SQL OPEN B; + EXEC SQL FETCH B INTO :empl.name,:a.accs,:empl.byte; + if (sqlca.sqlcode) + { + printf ("fetch error = %ld\n", sqlca.sqlcode); + exit (sqlca.sqlcode); + } -EXEC SQL insert into empl values (1, 'first user', 20); -if (sqlca.sqlcode) - { - printf("select error = %ld\n", sqlca.sqlcode); - exit(sqlca.sqlcode); - } + EXEC SQL CLOSE B; -EXEC SQL select name, accs - into :empl.name, :empl.accs - from empl where idnum = :empl.idnum; -if (sqlca.sqlcode) - { - printf("select error = %ld\n", sqlca.sqlcode); - exit(sqlca.sqlcode); - } -printf("name=%s, accs=%d\n", empl.name, empl.accs); -EXEC SQL disconnect; -fclose(dbgs); -exit(0); + i=a.t[0]; + a.t[0]=a.t[1]; + a.t[1]=i; + + printf ("name=%s, accs=%d byte=", empl.name, a.accs); + for (i=0; i<20; i++) + { + if (empl.byte[i] == '#') + break; + printf("(%o)", (unsigned char)empl.byte[i]); + } + printf("\n"); + EXEC SQL disconnect; + fclose (dbgs); + exit (0); } |