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