EXECUTE IMMEDIATE#

EXECUTE IMMEDIATE

EXECUTE IMMEDIATE

EXECUTE IMMEDIATE — динамически подготавливает и выполняет оператор

Синтаксис

EXECUTE IMMEDIATE string

Описание

EXECUTE IMMEDIATE немедленно подготавливает и выполняет динамически указанный SQL-оператор, без извлечения строк результатов.

Параметры

string #

Строка в буквальном виде или переменная хоста, содержащая SQL-оператор, которое должно быть выполнено.

Примечания

В типичном использовании string является ссылкой на переменную хоста, содержащую динамически созданное SQL-оператор. Использование литеральной строки не очень полезно; лучше написать SQL-оператор напрямую, без дополнительного набора EXECUTE IMMEDIATE.

Если вы все же используете литеральную строку, имейте в виду, что любые двойные кавычки, которые нужно включить в SQL-запрос, должны быть записаны в виде восьмеричных экранирований (\042), а не в обычной идиоме C \". Это связано с тем, что строка находится внутри секции EXEC SQL, поэтому лексер ECPG анализирует ее в соответствии с правилами SQL, а не C. Любые встроенные обратные косые черты будут обработаны позже в соответствии с правилами C; но \" вызывает немедленную синтаксическую ошибку, поскольку она воспринимается как завершение литерала.

Примеры

Вот пример, который выполняет оператор INSERT с использованием EXECUTE IMMEDIATE и переменной хоста с именем command:

sprintf(command, "INSERT INTO test (name, amount, letter) VALUES ('db: ''r1''', 1, 'f')");
EXEC SQL EXECUTE IMMEDIATE :command;

Совместимость

EXECUTE IMMEDIATE указано в стандарте SQL.