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.