statements: /*EMPTY*/
| statements statement
+ ;
statement: ecpgstart opt_at stmt ';' { connection = NULL; }
| ecpgstart stmt ';'
key_delete: ON DELETE key_reference
{ $$ = cat2_str(make_str("on delete"), $3); }
+ ;
key_update: ON UPDATE key_reference
{ $$ = cat2_str(make_str("on update"), $3); }
+ ;
key_reference: NO ACTION { $$ = make_str("no action"); }
| RESTRICT { $$ = make_str("restrict"); }
{ $$ = $1; }
| StringConst ',' StringConst
{ $$ = cat_str(3, $1, make_str(","), $3); }
+ ;
func_return: func_type
{
opt_empty_parentheses: '(' ')' { $$ = make_str("()"); }
| /*EMPTY*/ { $$ = EMPTY; }
+ ;
/*****************************************************************************
/* also allow ORACLE syntax */
| SQL_CONNECT ora_user
{ $$ = cat_str(3, make_str("NULL,"), $2, make_str(",NULL")); }
+ ;
connection_target: database_name opt_server opt_port
{
else
$$ = make3_str(make_str("\""), $1, make_str("\""));
}
+ ;
db_prefix: ident cvariable
{
$$ = make3_str($1, make_str(":"), $2);
}
+ ;
server: Op server_name
{
$$ = make2_str($1, $2);
}
+ ;
opt_server: server { $$ = $1; }
| /*EMPTY*/ { $$ = EMPTY; }
+ ;
server_name: ColId { $$ = $1; }
| ColId '.' server_name { $$ = make3_str($1, make_str("."), $3); }
| IP { $$ = make_name(); }
+ ;
opt_port: ':' PosIntConst { $$ = make2_str(make_str(":"), $2); }
| /*EMPTY*/ { $$ = EMPTY; }
+ ;
opt_connection_name: AS connection_target { $$ = $2; }
| /*EMPTY*/ { $$ = make_str("NULL"); }
+ ;
opt_user: USER ora_user { $$ = $2; }
- | /*EMPTY*/ { $$ = make_str("NULL,NULL"); }
+ | /*EMPTY*/ { $$ = make_str("NULL,NULL"); }
+ ;
ora_user: user_name
{ $$ = cat2_str($1, make_str(", NULL")); }
* the exec sql disconnect statement: disconnect from the given database
*/
ECPGDisconnect: SQL_DISCONNECT dis_name { $$ = $2; }
+ ;
dis_name: connection_object { $$ = $1; }
| CURRENT { $$ = make_str("\"CURRENT\""); }
;
variable: civarind | civar
+ ;
variablelist: variable | variable ',' variablelist;
/*
;
cvariable: CVARIABLE { $$ = $1; }
+ ;
indicator: CVARIABLE { check_indicator((find_variable($1))->type); $$ = $1; }
| SQL_INDICATOR cvariable { check_indicator((find_variable($2))->type); $$ = $2; }