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.
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.