Age Owner TLA Line data Source code
1 : EXEC SQL INCLUDE ../regression; 2 : EXEC SQL WHENEVER SQLERROR SQLPRINT; 3 : 4 : int 6094 meskes 5 CBC 1 : main(void) 6 : { 7 : EXEC SQL BEGIN DECLARE SECTION; 5717 8 1 : char *stmt1 = "INSERT INTO test1 VALUES ($1, $2)"; 9 1 : char *stmt2 = "SELECT * from test1 where a = $1 and b = $2"; 10 1 : char *stmt3 = "SELECT * from test1 where :var = a"; 11 : 6094 12 1 : int val1 = 1; 6073 13 1 : char val2[4] = "one", val2output[] = "AAA"; 6094 14 1 : int val1output = 2, val2i = 0; 15 1 : int val2null = -1; 16 : int ind1, ind2; 3377 17 1 : char desc1[8] = "outdesc"; 18 : EXEC SQL END DECLARE SECTION; 19 : 6094 20 1 : ECPGdebug(1, stderr); 21 : 22 1 : EXEC SQL ALLOCATE DESCRIPTOR indesc; 3377 23 1 : EXEC SQL ALLOCATE DESCRIPTOR :desc1; 6094 24 1 : 25 1 : EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1; 26 1 : EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2; 27 1 : 28 1 : EXEC SQL CONNECT TO REGRESSDB1; 29 1 : 30 1 : EXEC SQL CREATE TABLE test1 (a int, b text); 31 1 : EXEC SQL PREPARE foo1 FROM :stmt1; 5717 32 1 : EXEC SQL PREPARE "Foo-1" FROM :stmt1; 6094 33 1 : EXEC SQL PREPARE foo2 FROM :stmt2; 34 1 : EXEC SQL PREPARE foo3 FROM :stmt3; 35 1 : 4842 36 1 : EXEC SQL EXECUTE foo1 USING SQL DESCRIPTOR indesc; 6094 37 1 : 38 1 : EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2; 39 1 : EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2null, DATA = :val2; 40 1 : 4842 41 1 : EXEC SQL EXECUTE foo1 USING SQL DESCRIPTOR indesc; 6094 42 1 : 6073 43 1 : EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 3; 44 1 : EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val1, DATA = 'this is a long test'; 45 1 : 4842 46 1 : EXEC SQL EXECUTE "Foo-1" USING SQL DESCRIPTOR indesc; 5717 47 1 : 48 1 : EXEC SQL DEALLOCATE "Foo-1"; 6073 49 1 : 6094 50 1 : EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1; 51 1 : EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2; 52 1 : 3373 53 1 : EXEC SQL EXECUTE foo2 USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR :desc1; 6094 54 1 : 3373 55 1 : EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :val2output = DATA; 6094 56 1 : printf("output = %s\n", val2output); 57 : 58 : EXEC SQL DECLARE c1 CURSOR FOR foo2; 4842 59 1 : EXEC SQL OPEN c1 USING SQL DESCRIPTOR indesc; 6094 60 1 : 6093 61 1 : EXEC SQL FETCH next FROM c1 INTO :val1output:ind1, :val2output:ind2; 62 1 : printf("val1=%d (ind1: %d) val2=%s (ind2: %d)\n", 63 : val1output, ind1, val2output, ind2); 64 : 6094 65 1 : EXEC SQL CLOSE c1; 66 1 : 67 1 : EXEC SQL SET DESCRIPTOR indesc COUNT = 1; 68 1 : EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2; 69 1 : 70 : EXEC SQL DECLARE c2 CURSOR FOR foo3; 4842 71 1 : EXEC SQL OPEN c2 USING SQL DESCRIPTOR indesc; 6094 72 1 : 73 1 : EXEC SQL FETCH next FROM c2 INTO :val1output, :val2output :val2i; 74 1 : printf("val1=%d val2=%s\n", val1output, val2i ? "null" : val2output); 75 : 76 1 : EXEC SQL CLOSE c2; 77 1 : 6073 78 1 : EXEC SQL SELECT * INTO :val1output, :val2output:val2i FROM test1 where a = 3; 79 1 : printf("val1=%d val2=%c%c%c%c warn=%c truncate=%d\n", val1output, val2output[0], val2output[1], val2output[2], val2output[3], sqlca.sqlwarn[0], val2i); 80 : 6094 81 1 : EXEC SQL DROP TABLE test1; 5717 82 1 : EXEC SQL DEALLOCATE ALL; 6094 83 1 : EXEC SQL DISCONNECT; 84 1 : 85 1 : EXEC SQL DEALLOCATE DESCRIPTOR indesc; 3373 86 1 : EXEC SQL DEALLOCATE DESCRIPTOR :desc1; 6094 87 1 : 88 1 : return 0; 89 : }