~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to src/interfaces/ecpg/test/test_desc.pgc

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
EXEC SQL WHENEVER SQLERROR SQLPRINT;
 
2
 
 
3
int
 
4
main()
 
5
{
 
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 = ?";
 
10
 
 
11
        int val1 = 1;
 
12
        char val2[] = "one", val2output[] = "AAA";
 
13
        int val1output = 2, val2i = 0;
 
14
        int val2null = -1;
 
15
        EXEC SQL END DECLARE SECTION;
 
16
        FILE *dbgs;
 
17
 
 
18
        if ((dbgs = fopen("log", "w")) != NULL)
 
19
                ECPGdebug(1, dbgs);
 
20
 
 
21
        EXEC SQL ALLOCATE DESCRIPTOR indesc;
 
22
        EXEC SQL ALLOCATE DESCRIPTOR outdesc;
 
23
 
 
24
        EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1;
 
25
        EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2;
 
26
 
 
27
        EXEC SQL CONNECT TO mm;
 
28
 
 
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;
 
33
 
 
34
        EXEC SQL EXECUTE foo1 USING DESCRIPTOR indesc;
 
35
 
 
36
        EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2;
 
37
        EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2null, DATA = :val2;
 
38
        
 
39
        EXEC SQL EXECUTE foo1 USING DESCRIPTOR indesc;
 
40
 
 
41
        EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1;
 
42
        EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2;
 
43
 
 
44
        EXEC SQL EXECUTE foo2 USING DESCRIPTOR indesc INTO DESCRIPTOR outdesc;
 
45
        
 
46
        EXEC SQL GET DESCRIPTOR outdesc VALUE 1 :val2output = DATA;
 
47
        printf("output = %s\n", val2output);
 
48
        
 
49
        EXEC SQL DECLARE c1 CURSOR FOR foo2;
 
50
        EXEC SQL OPEN c1 USING DESCRIPTOR indesc;
 
51
 
 
52
        EXEC SQL FETCH next FROM c1 INTO :val1output, :val2output;
 
53
        printf("val1=%d val2=%s\n", val1output, val2output);
 
54
 
 
55
        EXEC SQL CLOSE c1;
 
56
 
 
57
        EXEC SQL SET DESCRIPTOR indesc COUNT = 1;
 
58
        EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2;
 
59
        
 
60
        EXEC SQL DECLARE c2 CURSOR FOR foo3;
 
61
        EXEC SQL OPEN c2 USING DESCRIPTOR indesc;
 
62
 
 
63
        EXEC SQL FETCH next FROM c2 INTO :val1output, :val2output :val2i;
 
64
        printf("val1=%d val2=%s\n", val1output, val2i ? "null" : val2output);
 
65
 
 
66
        EXEC SQL CLOSE c2;
 
67
        
 
68
        EXEC SQL SELECT * INTO :val1output, :val2output :val2i FROM test1 where a = 2;
 
69
        printf("val1=%d val2=%s\n", val1output, val2i ? "null" : val2output);
 
70
        
 
71
        EXEC SQL DROP TABLE test1;
 
72
        EXEC SQL DISCONNECT;
 
73
 
 
74
        EXEC SQL DEALLOCATE DESCRIPTOR indesc;
 
75
        EXEC SQL DEALLOCATE DESCRIPTOR outdesc;
 
76
 
 
77
        if (dbgs != NULL)
 
78
                fclose(dbgs);
 
79
                        
 
80
        return 0;
 
81
}