mirror of https://github.com/postgres/postgres
Author: Vinayak Pokale Reviewed-By: Masahiko Sawadapull/31/head^2
parent
3f4c7917b3
commit
d22e9d5305
@ -0,0 +1,161 @@ |
|||||||
|
/* Processed by ecpg (regression mode) */ |
||||||
|
/* These include files are added by the preprocessor */ |
||||||
|
#include <ecpglib.h> |
||||||
|
#include <ecpgerrno.h> |
||||||
|
#include <sqlca.h> |
||||||
|
/* End of automatic include section */ |
||||||
|
#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y)) |
||||||
|
|
||||||
|
#line 1 "whenever_do_continue.pgc" |
||||||
|
#include <stdlib.h> |
||||||
|
|
||||||
|
|
||||||
|
#line 1 "regression.h" |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#line 3 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
/* exec sql whenever sqlerror sqlprint ; */ |
||||||
|
#line 5 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
int main(void) |
||||||
|
{ |
||||||
|
/* exec sql begin declare section */ |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#line 15 "whenever_do_continue.pgc" |
||||||
|
struct {
|
||||||
|
#line 12 "whenever_do_continue.pgc" |
||||||
|
char ename [ 12 ] ; |
||||||
|
|
||||||
|
#line 13 "whenever_do_continue.pgc" |
||||||
|
float sal ; |
||||||
|
|
||||||
|
#line 14 "whenever_do_continue.pgc" |
||||||
|
float comm ; |
||||||
|
} emp ; |
||||||
|
|
||||||
|
#line 17 "whenever_do_continue.pgc" |
||||||
|
char msg [ 128 ] ; |
||||||
|
/* exec sql end declare section */ |
||||||
|
#line 18 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
ECPGdebug(1, stderr); |
||||||
|
|
||||||
|
strcpy(msg, "connect"); |
||||||
|
{ ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0);
|
||||||
|
#line 23 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
if (sqlca.sqlcode < 0) sqlprint();} |
||||||
|
#line 23 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
strcpy(msg, "create"); |
||||||
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table emp ( ename varchar , sal double precision , comm double precision )", ECPGt_EOIT, ECPGt_EORT); |
||||||
|
#line 26 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
if (sqlca.sqlcode < 0) sqlprint();} |
||||||
|
#line 26 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
strcpy(msg, "insert"); |
||||||
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp values ( 'Ram' , 111100 , 21 )", ECPGt_EOIT, ECPGt_EORT); |
||||||
|
#line 29 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
if (sqlca.sqlcode < 0) sqlprint();} |
||||||
|
#line 29 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp values ( 'aryan' , 11110 , null )", ECPGt_EOIT, ECPGt_EORT); |
||||||
|
#line 30 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
if (sqlca.sqlcode < 0) sqlprint();} |
||||||
|
#line 30 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp values ( 'josh' , 10000 , 10 )", ECPGt_EOIT, ECPGt_EORT); |
||||||
|
#line 31 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
if (sqlca.sqlcode < 0) sqlprint();} |
||||||
|
#line 31 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into emp values ( 'tom' , 20000 , null )", ECPGt_EOIT, ECPGt_EORT); |
||||||
|
#line 32 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
if (sqlca.sqlcode < 0) sqlprint();} |
||||||
|
#line 32 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
/* declare c cursor for select ename , sal , comm from emp order by ename asc */ |
||||||
|
#line 34 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare c cursor for select ename , sal , comm from emp order by ename asc", ECPGt_EOIT, ECPGt_EORT); |
||||||
|
#line 36 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
if (sqlca.sqlcode < 0) sqlprint();} |
||||||
|
#line 36 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
/* The 'BREAK' condition to exit the loop. */ |
||||||
|
/* exec sql whenever not found break ; */ |
||||||
|
#line 39 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
/* The DO CONTINUE makes the loop start at the next iteration when an error occurs.*/ |
||||||
|
/* exec sql whenever sqlerror continue ; */ |
||||||
|
#line 42 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
while (1) |
||||||
|
{ |
||||||
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch c", ECPGt_EOIT,
|
||||||
|
ECPGt_char,&(emp.ename),(long)12,(long)1,(12)*sizeof(char),
|
||||||
|
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||||
|
ECPGt_float,&(emp.sal),(long)1,(long)1,sizeof(float),
|
||||||
|
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
|
||||||
|
ECPGt_float,&(emp.comm),(long)1,(long)1,sizeof(float),
|
||||||
|
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT); |
||||||
|
#line 46 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
if (sqlca.sqlcode == ECPG_NOT_FOUND) break; |
||||||
|
#line 46 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
if (sqlca.sqlcode < 0) continue;} |
||||||
|
#line 46 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
/* The employees with non-NULL commissions will be displayed. */ |
||||||
|
printf("%s %7.2f %9.2f\n", emp.ename, emp.sal, emp.comm); |
||||||
|
} |
||||||
|
|
||||||
|
/*
|
||||||
|
* This 'CONTINUE' shuts off the 'DO CONTINUE' and allow the program to |
||||||
|
* proceed if any further errors do occur. |
||||||
|
*/ |
||||||
|
/* exec sql whenever sqlerror continue ; */ |
||||||
|
#line 55 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close c", ECPGt_EOIT, ECPGt_EORT);} |
||||||
|
#line 57 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
strcpy(msg, "drop"); |
||||||
|
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table emp", ECPGt_EOIT, ECPGt_EORT);} |
||||||
|
#line 60 "whenever_do_continue.pgc" |
||||||
|
|
||||||
|
|
||||||
|
exit(0); |
||||||
|
} |
@ -0,0 +1,112 @@ |
|||||||
|
[NO_PID]: ECPGdebug: set to 1 |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ECPGconnect: opening database ecpg1_regression on <DEFAULT> port <DEFAULT> |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 26: query: create table emp ( ename varchar , sal double precision , comm double precision ); with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 26: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 26: OK: CREATE TABLE |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 29: query: insert into emp values ( 'Ram' , 111100 , 21 ); with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 29: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 29: OK: INSERT 0 1 |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 30: query: insert into emp values ( 'aryan' , 11110 , null ); with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 30: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 30: OK: INSERT 0 1 |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 31: query: insert into emp values ( 'josh' , 10000 , 10 ); with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 31: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 31: OK: INSERT 0 1 |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 32: query: insert into emp values ( 'tom' , 20000 , null ); with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 32: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 32: OK: INSERT 0 1 |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 36: query: declare c cursor for select ename , sal , comm from emp order by ename asc; with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 36: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 36: OK: DECLARE CURSOR |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 46: query: fetch c; with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 46: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 46: correctly got 1 tuples with 3 fields |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: aryan offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: 11110 offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: raising sqlcode -213 on line 46: null value without indicator on line 46 |
||||||
|
[NO_PID]: sqlca: code: -213, state: 22002 |
||||||
|
[NO_PID]: ecpg_execute on line 46: query: fetch c; with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 46: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 46: correctly got 1 tuples with 3 fields |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: josh offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: 10000 offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: 10 offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 46: query: fetch c; with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 46: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 46: correctly got 1 tuples with 3 fields |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: Ram offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: 111100 offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: 21 offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 46: query: fetch c; with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 46: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 46: correctly got 1 tuples with 3 fields |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: tom offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: 20000 offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_get_data on line 46: RESULT: offset: -1; array: no |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: raising sqlcode -213 on line 46: null value without indicator on line 46 |
||||||
|
[NO_PID]: sqlca: code: -213, state: 22002 |
||||||
|
[NO_PID]: ecpg_execute on line 46: query: fetch c; with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 46: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 46: correctly got 0 tuples with 3 fields |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: raising sqlcode 100 on line 46: no data found on line 46 |
||||||
|
[NO_PID]: sqlca: code: 100, state: 02000 |
||||||
|
[NO_PID]: ecpg_execute on line 57: query: close c; with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 57: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 57: OK: CLOSE CURSOR |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 60: query: drop table emp; with 0 parameter(s) on connection ecpg1_regression |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_execute on line 60: using PQexec |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
||||||
|
[NO_PID]: ecpg_process_output on line 60: OK: DROP TABLE |
||||||
|
[NO_PID]: sqlca: code: 0, state: 00000 |
@ -0,0 +1,2 @@ |
|||||||
|
josh 10000.00 10.00 |
||||||
|
Ram 111100.00 21.00 |
@ -0,0 +1,63 @@ |
|||||||
|
#include <stdlib.h> |
||||||
|
|
||||||
|
exec sql include ../regression; |
||||||
|
|
||||||
|
exec sql whenever sqlerror sqlprint; |
||||||
|
|
||||||
|
int main(void) |
||||||
|
{ |
||||||
|
exec sql begin declare section; |
||||||
|
struct |
||||||
|
{ |
||||||
|
char ename[12]; |
||||||
|
float sal; |
||||||
|
float comm; |
||||||
|
} emp; |
||||||
|
|
||||||
|
char msg[128]; |
||||||
|
exec sql end declare section; |
||||||
|
|
||||||
|
ECPGdebug(1, stderr); |
||||||
|
|
||||||
|
strcpy(msg, "connect"); |
||||||
|
exec sql connect to REGRESSDB1; |
||||||
|
|
||||||
|
strcpy(msg, "create"); |
||||||
|
exec sql create table emp(ename varchar,sal double precision, comm double precision); |
||||||
|
|
||||||
|
strcpy(msg, "insert"); |
||||||
|
exec sql insert into emp values ('Ram',111100,21); |
||||||
|
exec sql insert into emp values ('aryan',11110,null); |
||||||
|
exec sql insert into emp values ('josh',10000,10); |
||||||
|
exec sql insert into emp values ('tom',20000,null); |
||||||
|
|
||||||
|
exec sql declare c cursor for select ename, sal, comm from emp order by ename asc; |
||||||
|
|
||||||
|
exec sql open c; |
||||||
|
|
||||||
|
/* The 'BREAK' condition to exit the loop. */ |
||||||
|
exec sql whenever not found do break; |
||||||
|
|
||||||
|
/* The DO CONTINUE makes the loop start at the next iteration when an error occurs.*/ |
||||||
|
exec sql whenever sqlerror do continue; |
||||||
|
|
||||||
|
while (1) |
||||||
|
{ |
||||||
|
exec sql fetch c into :emp; |
||||||
|
/* The employees with non-NULL commissions will be displayed. */ |
||||||
|
printf("%s %7.2f %9.2f\n", emp.ename, emp.sal, emp.comm); |
||||||
|
} |
||||||
|
|
||||||
|
/* |
||||||
|
* This 'CONTINUE' shuts off the 'DO CONTINUE' and allow the program to |
||||||
|
* proceed if any further errors do occur. |
||||||
|
*/ |
||||||
|
exec sql whenever sqlerror continue; |
||||||
|
|
||||||
|
exec sql close c; |
||||||
|
|
||||||
|
strcpy(msg, "drop"); |
||||||
|
exec sql drop table emp; |
||||||
|
|
||||||
|
exit(0); |
||||||
|
} |
Loading…
Reference in new issue