Age Owner TLA Line data Source code
1 : #include <stdio.h>
2 : #include <stdlib.h>
3 : #include <string.h>
4 :
5 : /* test automatic prepare for all statements */
6 : EXEC SQL INCLUDE ../regression;
7 :
4825 meskes 8 CBC 2 : static void test(void) {
9 : EXEC SQL BEGIN DECLARE SECTION;
3437 peter_e 10 2 : int item[4], ind[4], i = 1;
11 : int item1, ind1;
4862 meskes 12 2 : char sqlstr[64] = "SELECT item2 FROM T ORDER BY item2 NULLS LAST";
13 : EXEC SQL END DECLARE SECTION;
14 :
5717 15 2 : ECPGdebug(1, stderr);
16 2 : EXEC SQL CONNECT TO REGRESSDB1;
17 :
18 : EXEC SQL WHENEVER SQLWARNING SQLPRINT;
19 : EXEC SQL WHENEVER SQLERROR SQLPRINT;
20 :
21 2 : EXEC SQL CREATE TABLE T ( Item1 int, Item2 int );
22 2 :
23 2 : EXEC SQL INSERT INTO T VALUES ( 1, null );
24 2 : EXEC SQL INSERT INTO T VALUES ( 1, :i );
25 2 : i++;
26 2 : EXEC SQL INSERT INTO T VALUES ( 1, :i );
27 2 : EXEC SQL PREPARE I AS INSERT INTO T VALUES ( 1, 2 );
28 2 : EXEC SQL EXECUTE I;
29 2 :
30 2 : EXEC SQL SELECT Item2 INTO :item:ind FROM T ORDER BY Item2 NULLS LAST;
31 2 :
32 10 : for (i=0; i<4; i++)
3437 peter_e 33 8 : printf("item[%d] = %d\n", i, ind[i] ? -1 : item[i]);
34 :
35 : EXEC SQL DECLARE C CURSOR FOR SELECT Item1 FROM T;
36 :
5717 meskes 37 2 : EXEC SQL OPEN C;
38 2 :
39 2 : EXEC SQL FETCH 1 IN C INTO :i;
40 2 : printf("i = %d\n", i);
41 :
42 2 : EXEC SQL CLOSE C;
43 2 :
4862 44 2 : EXEC SQL PREPARE stmt1 FROM :sqlstr;
45 2 :
46 : EXEC SQL DECLARE cur1 CURSOR FOR stmt1;
47 :
48 2 : EXEC SQL OPEN cur1;
49 2 :
50 : EXEC SQL WHENEVER NOT FOUND DO BREAK;
51 :
52 2 : i = 0;
1536 tgl 53 10 : while (i < 100)
54 : {
4862 meskes 55 10 : EXEC SQL FETCH cur1 INTO :item1:ind1;
56 10 : printf("item[%d] = %d\n", i, ind1 ? -1 : item1);
57 8 : i++;
58 : }
59 :
60 2 : EXEC SQL CLOSE cur1;
61 2 :
5717 62 2 : EXEC SQL DROP TABLE T;
63 2 :
64 2 : EXEC SQL DISCONNECT ALL;
4825 65 2 : }
66 :
67 1 : int main() {
68 1 : test();
69 1 : test(); /* retry */
70 :
5717 71 1 : return 0;
72 : }
|