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.
string
#A 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.