Line data Source code
1 : #include <stdio.h>
2 : #include <stdlib.h>
3 :
4 : EXEC SQL include ../regression;
5 :
6 : EXEC SQL BEGIN DECLARE SECTION;
7 : struct TBempl
8 : {
9 : long idnum;
10 : char name[21];
11 : short accs;
12 : char byte[20];
13 : };
14 : EXEC SQL END DECLARE SECTION;
15 :
16 : EXEC SQL WHENEVER SQLERROR STOP;
17 :
18 : int
19 2 : main (void)
20 : {
21 : EXEC SQL BEGIN DECLARE SECTION;
22 : struct TBempl empl;
23 2 : char *pointer = NULL;
24 2 : char *data = "\\001\\155\\000\\212";
25 : EXEC SQL END DECLARE SECTION;
26 : int i;
27 :
28 2 : ECPGdebug (1, stderr);
29 :
30 2 : empl.idnum = 1;
31 2 : EXEC SQL connect to REGRESSDB1;
32 2 : EXEC SQL set bytea_output = escape;
33 2 : EXEC SQL create table empl
34 : (idnum integer, name char (20), accs smallint, byte bytea);
35 2 : EXEC SQL insert into empl values (1, 'first user', 320, :data);
36 2 : EXEC SQL DECLARE C CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum;
37 2 : EXEC SQL OPEN C;
38 2 : EXEC SQL FETCH C INTO:empl.name,:empl.accs,:empl.byte;
39 2 : printf ("name=%s, accs=%d byte=%s\n", empl.name, empl.accs, empl.byte);
40 :
41 2 : EXEC SQL CLOSE C;
42 2 :
43 2 : memset(empl.name, 0, 21L);
44 2 : EXEC SQL DECLARE B BINARY CURSOR FOR select name, accs, byte from empl where idnum =:empl.idnum;
45 2 : EXEC SQL OPEN B;
46 2 : EXEC SQL FETCH B INTO :empl.name,:empl.accs,:empl.byte;
47 2 : EXEC SQL CLOSE B;
48 2 :
49 : /* do not print a.accs because big/little endian will have different outputs here */
50 2 : printf ("name=%s, byte=", empl.name);
51 10 : for (i=0; i<4; i++)
52 8 : printf("(%o)", (unsigned char)empl.byte[i]);
53 2 : printf("\n");
54 :
55 2 : EXEC SQL DECLARE A BINARY CURSOR FOR select byte from empl where idnum =:empl.idnum;
56 2 : EXEC SQL OPEN A;
57 2 : EXEC SQL FETCH A INTO :pointer;
58 2 : EXEC SQL CLOSE A;
59 2 :
60 2 : if (pointer) {
61 2 : printf ("pointer=");
62 10 : for (i=0; i<4; i++)
63 8 : printf("(%o)", (unsigned char)pointer[i]);
64 2 : printf("\n");
65 2 : free(pointer);
66 : }
67 :
68 2 : EXEC SQL disconnect;
69 2 : exit (0);
70 : }
|