|
|
|
@ -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); |
|
|
|
|
} |
|
|
|
|