EXECUTE IMMEDIATE
EXECUTE IMMEDIATE — dynamically prepare and execute a statement
Synopsis
EXECUTE IMMEDIATE string
Description
EXECUTE IMMEDIATE
immediately prepares and executes a dynamically specified SQL statement, without retrieving result rows.
Parameters
string
A literal string or a host variable containing the SQL statement to be executed.
Notes
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.
Examples
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;
Compatibility
EXECUTE IMMEDIATE
is specified in the SQL standard.