EXECUTE IMMEDIATE — dynamically prepare and execute a statement
EXECUTE IMMEDIATE string
EXECUTE IMMEDIATE immediately prepares and
executes a dynamically specified SQL statement, without
retrieving result rows.
stringA literal string or a host variable containing the SQL statement to be executed.
In typical usage, the string is a host
variable reference to a string containing a dynamically-constructed
SQL statement. The case of a literal string is not very useful;
you might as well just write the SQL statement directly, without
the extra typing of EXECUTE IMMEDIATE.
If you do use a literal string, keep in mind that any double quotes
you might wish to include in the SQL statement must be written as
octal escapes (\042) not the usual C
idiom \". This is because the string is inside
an EXEC SQL section, so the ECPG lexer parses it
according to SQL rules not C rules. Any embedded backslashes will
later be handled according to C rules; but \"
causes an immediate syntax error because it is seen as ending the
literal.
Here is an example that executes an INSERT
statement using EXECUTE IMMEDIATE and a host
variable named command:
sprintf(command, "INSERT INTO test (name, amount, letter) VALUES ('db: ''r1''', 1, 'f')");
EXEC SQL EXECUTE IMMEDIATE :command;
EXECUTE IMMEDIATE is specified in the SQL standard.