PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
sql-execute.c
Go to the documentation of this file.
1/* Processed by ecpg (regression mode) */
2/* These include files are added by the preprocessor */
3#include <ecpglib.h>
4#include <ecpgerrno.h>
5#include <sqlca.h>
6/* End of automatic include section */
7#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
8
9#line 1 "execute.pgc"
10#include <stdlib.h>
11#include <string.h>
12#include <stdlib.h>
13#include <stdio.h>
14
15
16#line 1 "regression.h"
17
18
19
20
21
22
23#line 6 "execute.pgc"
24
25
26/* exec sql whenever sqlerror sqlprint ; */
27#line 8 "execute.pgc"
28
29
30int
31main(void)
32{
33/* exec sql begin declare section */
34
35
36
37
38
39
40#line 14 "execute.pgc"
41 int amount [ 8 ] ;
42
43#line 15 "execute.pgc"
44 int increment = 100 ;
45
46#line 16 "execute.pgc"
47 char name [ 8 ] [ 8 ] ;
48
49#line 17 "execute.pgc"
50 char letter [ 8 ] [ 1 ] ;
51
52#line 18 "execute.pgc"
53 char command [ 128 ] ;
54/* exec sql end declare section */
55#line 19 "execute.pgc"
56
57 int i,j;
58
59 ECPGdebug(1, stderr);
60
61 { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , "main", 0);
62#line 24 "execute.pgc"
63
64if (sqlca.sqlcode < 0) sqlprint();}
65#line 24 "execute.pgc"
66
67 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table test ( name char ( 8 ) , amount int , letter char ( 1 ) )", ECPGt_EOIT, ECPGt_EORT);
68#line 25 "execute.pgc"
69
70if (sqlca.sqlcode < 0) sqlprint();}
71#line 25 "execute.pgc"
72
73 { ECPGtrans(__LINE__, NULL, "commit");
74#line 26 "execute.pgc"
75
76if (sqlca.sqlcode < 0) sqlprint();}
77#line 26 "execute.pgc"
78
79
80 /* test handling of embedded quotes in EXECUTE IMMEDIATE "literal" */
81 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_exec_immediate, "insert into test (name, \042amount\042, letter) values ('db: ''r1''', 1, 'f')", ECPGt_EOIT, ECPGt_EORT);
82#line 29 "execute.pgc"
83
84if (sqlca.sqlcode < 0) sqlprint();}
85#line 29 "execute.pgc"
86
87
88 sprintf(command, "insert into test (name, amount, letter) values ('db: ''r1''', 2, 't')");
89 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_exec_immediate, command, ECPGt_EOIT, ECPGt_EORT);
90#line 32 "execute.pgc"
91
92if (sqlca.sqlcode < 0) sqlprint();}
93#line 32 "execute.pgc"
94
95
96 sprintf(command, "insert into test (name, amount, letter) select name, amount+10, letter from test");
97 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_exec_immediate, command, ECPGt_EOIT, ECPGt_EORT);
98#line 35 "execute.pgc"
99
100if (sqlca.sqlcode < 0) sqlprint();}
101#line 35 "execute.pgc"
102
103
104 printf("Inserted %ld tuples via execute immediate\n", sqlca.sqlerrd[2]);
105
106 sprintf(command, "insert into test (name, amount, letter) select name, amount+$1, letter from test");
107 { ECPGprepare(__LINE__, NULL, 0, "i", command);
108#line 40 "execute.pgc"
109
110if (sqlca.sqlcode < 0) sqlprint();}
111#line 40 "execute.pgc"
112
113 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "i",
114 ECPGt_int,&(increment),(long)1,(long)1,sizeof(int),
115 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
116#line 41 "execute.pgc"
117
118if (sqlca.sqlcode < 0) sqlprint();}
119#line 41 "execute.pgc"
120
121
122 printf("Inserted %ld tuples via prepared execute\n", sqlca.sqlerrd[2]);
123
124 { ECPGtrans(__LINE__, NULL, "commit");
125#line 45 "execute.pgc"
126
127if (sqlca.sqlcode < 0) sqlprint();}
128#line 45 "execute.pgc"
129
130
131 sprintf (command, "select * from test");
132
133 { ECPGprepare(__LINE__, NULL, 0, "f", command);
134#line 49 "execute.pgc"
135
136if (sqlca.sqlcode < 0) sqlprint();}
137#line 49 "execute.pgc"
138
139 /* declare CUR cursor for $1 */
140#line 50 "execute.pgc"
141
142
143 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare CUR cursor for $1",
144 ECPGt_char_variable,(ECPGprepared_statement(NULL, "f", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
145 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
146#line 52 "execute.pgc"
147
148if (sqlca.sqlcode < 0) sqlprint();}
149#line 52 "execute.pgc"
150
151 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch 8 in CUR", ECPGt_EOIT,
152 ECPGt_char,(name),(long)8,(long)8,(8)*sizeof(char),
153 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
154 ECPGt_int,(amount),(long)1,(long)8,sizeof(int),
155 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
156 ECPGt_char,(letter),(long)1,(long)8,(1)*sizeof(char),
157 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
158#line 53 "execute.pgc"
159
160if (sqlca.sqlcode < 0) sqlprint();}
161#line 53 "execute.pgc"
162
163
164 for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
165 {
166 /* exec sql begin declare section */
167
168
169
170#line 58 "execute.pgc"
171 char n [ 8 ] , l = letter [ i ] [ 0 ] ;
172
173#line 59 "execute.pgc"
174 int a = amount [ i ] ;
175/* exec sql end declare section */
176#line 60 "execute.pgc"
177
178
179 strncpy(n, name[i], 8);
180 printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);
181 }
182
183 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close CUR", ECPGt_EOIT, ECPGt_EORT);
184#line 66 "execute.pgc"
185
186if (sqlca.sqlcode < 0) sqlprint();}
187#line 66 "execute.pgc"
188
189 { ECPGdeallocate(__LINE__, 0, NULL, "f");
190#line 67 "execute.pgc"
191
192if (sqlca.sqlcode < 0) sqlprint();}
193#line 67 "execute.pgc"
194
195
196 sprintf (command, "select * from test where amount = $1");
197
198 { ECPGprepare(__LINE__, NULL, 0, "f", command);
199#line 71 "execute.pgc"
200
201if (sqlca.sqlcode < 0) sqlprint();}
202#line 71 "execute.pgc"
203
204 /* declare CUR2 cursor for $1 */
205#line 72 "execute.pgc"
206
207
208 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare CUR2 cursor for $1",
209 ECPGt_char_variable,(ECPGprepared_statement(NULL, "f", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
210 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
211 ECPGt_const,"1",(long)1,(long)1,strlen("1"),
212 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
213#line 74 "execute.pgc"
214
215if (sqlca.sqlcode < 0) sqlprint();}
216#line 74 "execute.pgc"
217
218 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch in CUR2", ECPGt_EOIT,
219 ECPGt_char,(name),(long)8,(long)8,(8)*sizeof(char),
220 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
221 ECPGt_int,(amount),(long)1,(long)8,sizeof(int),
222 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
223 ECPGt_char,(letter),(long)1,(long)8,(1)*sizeof(char),
224 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
225#line 75 "execute.pgc"
226
227if (sqlca.sqlcode < 0) sqlprint();}
228#line 75 "execute.pgc"
229
230
231 for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
232 {
233 /* exec sql begin declare section */
234
235
236
237#line 80 "execute.pgc"
238 char n [ 8 ] , l = letter [ i ] [ 0 ] ;
239
240#line 81 "execute.pgc"
241 int a = amount [ i ] ;
242/* exec sql end declare section */
243#line 82 "execute.pgc"
244
245
246 strncpy(n, name[i], 8);
247 printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);
248 }
249
250 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close CUR2", ECPGt_EOIT, ECPGt_EORT);
251#line 88 "execute.pgc"
252
253if (sqlca.sqlcode < 0) sqlprint();}
254#line 88 "execute.pgc"
255
256 { ECPGdeallocate(__LINE__, 0, NULL, "f");
257#line 89 "execute.pgc"
258
259if (sqlca.sqlcode < 0) sqlprint();}
260#line 89 "execute.pgc"
261
262
263 sprintf (command, "select * from test where amount = $1");
264
265 { ECPGprepare(__LINE__, NULL, 0, "f", command);
266#line 93 "execute.pgc"
267
268if (sqlca.sqlcode < 0) sqlprint();}
269#line 93 "execute.pgc"
270
271 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "f",
272 ECPGt_const,"2",(long)1,(long)1,strlen("2"),
273 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
274 ECPGt_char,(name),(long)8,(long)8,(8)*sizeof(char),
275 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
276 ECPGt_int,(amount),(long)1,(long)8,sizeof(int),
277 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
278 ECPGt_char,(letter),(long)1,(long)8,(1)*sizeof(char),
279 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
280#line 94 "execute.pgc"
281
282if (sqlca.sqlcode < 0) sqlprint();}
283#line 94 "execute.pgc"
284
285
286 for (i=0, j=sqlca.sqlerrd[2]; i<j; i++)
287 {
288 /* exec sql begin declare section */
289
290
291
292#line 99 "execute.pgc"
293 char n [ 8 ] , l = letter [ i ] [ 0 ] ;
294
295#line 100 "execute.pgc"
296 int a = amount [ i ] ;
297/* exec sql end declare section */
298#line 101 "execute.pgc"
299
300
301 strncpy(n, name[i], 8);
302 printf("name[%d]=%8.8s\tamount[%d]=%d\tletter[%d]=%c\n", i, n, i, a, i, l);
303 }
304
305 { ECPGdeallocate(__LINE__, 0, NULL, "f");
306#line 107 "execute.pgc"
307
308if (sqlca.sqlcode < 0) sqlprint();}
309#line 107 "execute.pgc"
310
311 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table test", ECPGt_EOIT, ECPGt_EORT);
312#line 108 "execute.pgc"
313
314if (sqlca.sqlcode < 0) sqlprint();}
315#line 108 "execute.pgc"
316
317 { ECPGtrans(__LINE__, NULL, "commit");
318#line 109 "execute.pgc"
319
320if (sqlca.sqlcode < 0) sqlprint();}
321#line 109 "execute.pgc"
322
323 { ECPGdisconnect(__LINE__, "CURRENT");
324#line 110 "execute.pgc"
325
326if (sqlca.sqlcode < 0) sqlprint();}
327#line 110 "execute.pgc"
328
329
330 return 0;
331}
bool ECPGdisconnect(int lineno, const char *connection_name)
Definition: connect.c:676
bool ECPGconnect(int lineno, int c, const char *name, const char *user, const char *passwd, const char *connection_name, int autocommit)
Definition: connect.c:255
@ ECPGst_normal
Definition: ecpgtype.h:97
@ ECPGst_execute
Definition: ecpgtype.h:98
@ ECPGst_exec_immediate
Definition: ecpgtype.h:99
@ ECPGt_EOIT
Definition: ecpgtype.h:62
@ ECPGt_char_variable
Definition: ecpgtype.h:60
@ ECPGt_int
Definition: ecpgtype.h:44
@ ECPGt_NO_INDICATOR
Definition: ecpgtype.h:64
@ ECPGt_EORT
Definition: ecpgtype.h:63
@ ECPGt_const
Definition: ecpgtype.h:61
@ ECPGt_char
Definition: ecpgtype.h:43
void sqlprint(void)
Definition: error.c:334
bool ECPGdo(const int lineno, const int compat, const int force_indicator, const char *connection_name, const bool questionmarks, const int st, const char *query,...)
Definition: execute.c:2275
bool ECPGtrans(int lineno, const char *connection_name, const char *transaction)
Definition: misc.c:160
char * ECPGprepared_statement(const char *connection_name, const char *name, int lineno)
Definition: prepare.c:368
bool ECPGprepare(int lineno, const char *connection_name, const bool questionmarks, const char *name, const char *variable)
Definition: prepare.c:217
bool ECPGdeallocate(int lineno, int c, const char *connection_name, const char *name)
Definition: prepare.c:315
int a
Definition: isn.c:68
int j
Definition: isn.c:73
int i
Definition: isn.c:72
#define sprintf
Definition: port.h:240
#define printf(...)
Definition: port.h:244
int main(void)
Definition: sql-execute.c:31
#define ECPGdebug(X, Y)
Definition: sql-execute.c:7
#define sqlca
Definition: sqlca.h:59
const char * name