1
EXEC SQL WHENEVER SQLERROR SQLPRINT;
6
EXEC SQL BEGIN DECLARE SECTION;
7
char *stmt1 = "INSERT INTO test1 VALUES (?, ?)";
8
char *stmt2 = "SELECT * from test1 where a = ? and b = ?";
9
char *stmt3 = "SELECT * from test1 where a = ?";
12
char val2[] = "one", val2output[] = "AAA";
13
int val1output = 2, val2i = 0;
15
EXEC SQL END DECLARE SECTION;
18
if ((dbgs = fopen("log", "w")) != NULL)
21
EXEC SQL ALLOCATE DESCRIPTOR indesc;
22
EXEC SQL ALLOCATE DESCRIPTOR outdesc;
24
EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1;
25
EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2;
27
EXEC SQL CONNECT TO mm;
29
EXEC SQL CREATE TABLE test1 (a int, b text);
30
EXEC SQL PREPARE foo1 FROM :stmt1;
31
EXEC SQL PREPARE foo2 FROM :stmt2;
32
EXEC SQL PREPARE foo3 FROM :stmt3;
34
EXEC SQL EXECUTE foo1 USING DESCRIPTOR indesc;
36
EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2;
37
EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2null, DATA = :val2;
39
EXEC SQL EXECUTE foo1 USING DESCRIPTOR indesc;
41
EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1;
42
EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2;
44
EXEC SQL EXECUTE foo2 USING DESCRIPTOR indesc INTO DESCRIPTOR outdesc;
46
EXEC SQL GET DESCRIPTOR outdesc VALUE 1 :val2output = DATA;
47
printf("output = %s\n", val2output);
49
EXEC SQL DECLARE c1 CURSOR FOR foo2;
50
EXEC SQL OPEN c1 USING DESCRIPTOR indesc;
52
EXEC SQL FETCH next FROM c1 INTO :val1output, :val2output;
53
printf("val1=%d val2=%s\n", val1output, val2output);
57
EXEC SQL SET DESCRIPTOR indesc COUNT = 1;
58
EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2;
60
EXEC SQL DECLARE c2 CURSOR FOR foo3;
61
EXEC SQL OPEN c2 USING DESCRIPTOR indesc;
63
EXEC SQL FETCH next FROM c2 INTO :val1output, :val2output :val2i;
64
printf("val1=%d val2=%s\n", val1output, val2i ? "null" : val2output);
68
EXEC SQL SELECT * INTO :val1output, :val2output :val2i FROM test1 where a = 2;
69
printf("val1=%d val2=%s\n", val1output, val2i ? "null" : val2output);
71
EXEC SQL DROP TABLE test1;
74
EXEC SQL DEALLOCATE DESCRIPTOR indesc;
75
EXEC SQL DEALLOCATE DESCRIPTOR outdesc;