{
struct var_list *ptr;
+ struct sqlca_t *sqlca = ECPGget_sqlca();
+
+ if (sqlca == NULL)
+ {
+ ecpg_raise(lineno, ECPG_OUT_OF_MEMORY,
+ ECPG_SQLSTATE_ECPG_OUT_OF_MEMORY, NULL);
+ return;
+ }
+
+ ecpg_init_sqlca(sqlca);
+
for (ptr = ivlist; ptr != NULL; ptr = ptr->next)
{
if (ptr->number == number)
output_deallocate_prepare_statement($1);
}
ECPG: stmtDeclareCursorStmt block
- { output_simple_statement($1); }
+ { output_simple_statement($1, (strncmp($1, "ECPGset_var", strlen("ECPGset_var")) == 0) ? 4 : 0); }
ECPG: stmtDiscardStmt block
ECPG: stmtFetchStmt block
{ output_statement($1, 1, ECPGst_normal); }
}
| ECPGCursorStmt
{
- output_simple_statement($1);
+ output_simple_statement($1, (strncmp($1, "ECPGset_var", strlen("ECPGset_var")) == 0) ? 4 : 0);
}
| ECPGDeallocateDescr
{
}
| ECPGDeclare
{
- output_simple_statement($1);
+ output_simple_statement($1, 0);
}
| ECPGDescribe
{
if (connection)
mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in VAR statement");
- output_simple_statement($1);
+ output_simple_statement($1, 0);
}
| ECPGWhenever
{
if (connection)
mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in WHENEVER statement");
- output_simple_statement($1);
+ output_simple_statement($1, 0);
}
ECPG: where_or_current_clauseWHERECURRENT_POFcursor_name block
{
}
comment = cat_str(3, mm_strdup("/*"), c1, mm_strdup("*/"));
- if ((braces_open > 0) && INFORMIX_MODE) /* we're in a function */
- $$ = cat_str(3, adjust_outofscope_cursor_vars(this),
- mm_strdup("ECPG_informix_reset_sqlca();"),
- comment);
- else
- $$ = cat2_str(adjust_outofscope_cursor_vars(this), comment);
+ $$ = cat2_str(adjust_outofscope_cursor_vars(this), comment);
}
ECPG: ClosePortalStmtCLOSEcursor_name block
{
comment = cat_str(3, mm_strdup("/*"), mm_strdup(this->command), mm_strdup("*/"));
- if ((braces_open > 0) && INFORMIX_MODE) /* we're in a function */
- $$ = cat_str(3, adjust_outofscope_cursor_vars(this),
- mm_strdup("ECPG_informix_reset_sqlca();"),
+ $$ = cat_str(2, adjust_outofscope_cursor_vars(this),
comment);
- else
- $$ = cat2_str(adjust_outofscope_cursor_vars(this), comment);
}
;
}
void
-output_simple_statement(char *stmt)
+output_simple_statement(char *stmt, int whenever_mode)
{
output_escaped_str(stmt, false);
+ if (whenever_mode)
+ whenever_action(whenever_mode);
output_line_number();
free(stmt);
}
extern void output_statement(char *, int, enum ECPG_statement_type);
extern void output_prepare_statement(char *, char *);
extern void output_deallocate_prepare_statement(char *);
-extern void output_simple_statement(char *);
+extern void output_simple_statement(char *, int);
extern char *hashline_number(void);
extern int base_yyparse(void);
extern int base_yylex(void);
strcpy(msg, "declare");
- ECPG_informix_reset_sqlca(); /* declare mycur1 cursor for $1 */
+ /* declare mycur1 cursor for $1 */
#line 98 "sqlda.pgc"
strcpy(msg, "declare");
- ECPG_informix_reset_sqlca(); /* declare mycur2 cursor for $1 */
+ /* declare mycur2 cursor for $1 */
#line 135 "sqlda.pgc"
sqlca.sqlcode = 100;
ECPGset_var( 0, &( i ), __LINE__);\
- ECPG_informix_reset_sqlca(); /* declare c cursor for select * from test where i <= $1 */
+ /* declare c cursor for select * from test where i <= $1 */
+#line 49 "test_informix.pgc"
+
+if (sqlca.sqlcode < 0) dosqlprint ( );
+#line 49 "test_informix.pgc"
+
#line 49 "test_informix.pgc"
printf ("%ld\n", sqlca.sqlcode);
/* declare $0 cursor for select id , t from t1 */
#line 64 "cursor.pgc"
+if (sqlca.sqlcode < 0) exit (1);
+#line 64 "cursor.pgc"
+
+#line 64 "cursor.pgc"
+
strcpy(msg, "open");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "declare $0 cursor for select id , t from t1",
/* declare $0 cursor for select id , t from t1 */
#line 105 "cursor.pgc"
+if (sqlca.sqlcode < 0) exit (1);
+#line 105 "cursor.pgc"
+
+#line 105 "cursor.pgc"
+
strcpy(msg, "open");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "declare $0 cursor for select id , t from t1",
strcpy(msg, "declare");
ECPGset_var( 4, &( curname3 ), __LINE__);\
/* declare $0 cursor for $1 */
+#line 149 "cursor.pgc"
+
+if (sqlca.sqlcode < 0) exit (1);
+#line 149 "cursor.pgc"
+
#line 149 "cursor.pgc"
ECPGset_var( 5, &( curname5 ), __LINE__);\
/* declare $0 cursor for $1 */
#line 150 "cursor.pgc"
+if (sqlca.sqlcode < 0) exit (1);
+#line 150 "cursor.pgc"
+
+#line 150 "cursor.pgc"
+
strcpy(msg, "open");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "declare $0 cursor for $1",
/* declare $0 cursor for $1 */
#line 203 "cursor.pgc"
+if (sqlca.sqlcode < 0) exit (1);
+#line 203 "cursor.pgc"
+
+#line 203 "cursor.pgc"
+
strcpy(msg, "open");
{ ECPGdo(__LINE__, 0, 1, "test1", 0, ECPGst_normal, "declare $0 cursor for $1",
/* declare mycur cursor for select * from a1 */
#line 28 "outofscope.pgc"
+if (sqlca.sqlcode < 0) exit (1);
+#line 28 "outofscope.pgc"
+
+#line 28 "outofscope.pgc"
+
if (sqlca.sqlcode != 0)
exit(1);
ECPGset_var( 0, &( empl.idnum ), __LINE__);\
/* declare C cursor for select name , accs , byte from empl where idnum = $1 */
+#line 36 "binary.pgc"
+
+if (sqlca.sqlcode < 0) exit (1);
+#line 36 "binary.pgc"
+
#line 36 "binary.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare C cursor for select name , accs , byte from empl where idnum = $1 ",
memset(empl.name, 0, 21L);
ECPGset_var( 1, &( empl.idnum ), __LINE__);\
/* declare B binary cursor for select name , accs , byte from empl where idnum = $1 */
+#line 44 "binary.pgc"
+
+if (sqlca.sqlcode < 0) exit (1);
+#line 44 "binary.pgc"
+
#line 44 "binary.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare B binary cursor for select name , accs , byte from empl where idnum = $1 ",
ECPGset_var( 2, &( empl.idnum ), __LINE__);\
/* declare A binary cursor for select byte from empl where idnum = $1 */
+#line 55 "binary.pgc"
+
+if (sqlca.sqlcode < 0) exit (1);
+#line 55 "binary.pgc"
+
#line 55 "binary.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare A binary cursor for select byte from empl where idnum = $1 ",