]> granicus.if.org Git - postgresql/blob - src/interfaces/ecpg/test/preproc/array_of_struct.pgc
More variables gcc moans about
[postgresql] / src / interfaces / ecpg / test / preproc / array_of_struct.pgc
1 #include <stdio.h>
2
3 exec sql include ../regression;
4
5 EXEC SQL WHENEVER sqlerror sqlprint;
6 EXEC SQL WHENEVER sqlwarning sqlprint;
7 EXEC SQL WHENEVER not found sqlprint;
8
9 EXEC SQL TYPE customer IS
10     struct
11     {
12         varchar name[50];
13         int     phone;
14     };
15
16 EXEC SQL TYPE cust_ind IS
17     struct ind
18     {
19         short   name_ind;
20         short   phone_ind;
21     };
22
23 int main()
24 {
25     EXEC SQL begin declare section;
26       customer  custs1[10];
27       cust_ind  inds[10];
28       typedef struct
29       {
30         varchar name[50];
31         int     phone;
32       } customer2;
33       customer2  custs2[10];
34       struct customer3
35       {
36         varchar name[50];
37         int     phone;
38       } custs3[10];
39       struct customer4
40       {
41         varchar name[50];
42         int     phone;
43       } custs4;
44       int r;
45       varchar onlyname[2][50];
46     EXEC SQL end declare section;
47
48     ECPGdebug(1, stderr);
49           
50     EXEC SQL connect to REGRESSDB1;
51
52     EXEC SQL create table customers (c varchar(50), p int);
53     EXEC SQL insert into customers values ('John Doe', '12345');
54     EXEC SQL insert into customers values ('Jane Doe', '67890');
55
56     EXEC SQL select * INTO :custs1:inds from customers limit 2;
57     printf("custs1:\n");
58     for (r = 0; r < 2; r++)
59     {
60             printf( "name  - %s\n", custs1[r].name.arr );
61             printf( "phone - %d\n", custs1[r].phone );
62     }
63
64     EXEC SQL select * INTO :custs2:inds from customers limit 2;
65     printf("\ncusts2:\n");
66     for (r = 0; r < 2; r++)
67     {
68             printf( "name  - %s\n", custs2[r].name.arr );
69             printf( "phone - %d\n", custs2[r].phone );
70     }
71
72     EXEC SQL select * INTO :custs3:inds from customers limit 2;
73     printf("\ncusts3:\n");
74     for (r = 0; r < 2; r++)
75     {
76             printf( "name  - %s\n", custs3[r].name.arr );
77             printf( "phone - %d\n", custs3[r].phone );
78     }
79
80     EXEC SQL select * INTO :custs4:inds[0] from customers limit 1;
81     printf("\ncusts4:\n");
82     printf( "name  - %s\n", custs4.name.arr );
83     printf( "phone - %d\n", custs4.phone );
84
85     EXEC SQL select c INTO :onlyname from customers limit 2;
86     printf("\nname:\n");
87     for (r = 0; r < 2; r++)
88     {
89             printf( "name  - %s\n", onlyname[r].arr );
90     }
91
92     EXEC SQL disconnect all;
93
94     return( 0 );
95 }