PREPARE#
PREPARE
PREPARE — подготовить оператор для выполнения
Синтаксис
PREPAREprepared_name
FROMstring
Описание
PREPARE
готовит динамический запрос, указанный в виде строки, к выполнению. Это отличается от прямого SQL-запроса PREPARE, который также может использоваться во встроенных программах. Команда EXECUTE используется для выполнения любого вида подготовленного запроса.
Параметры
Примечания
В типичном использовании, string
является ссылкой на переменную хоста, содержащую динамически созданный SQL-оператор. В случае литеральной строки это не очень полезно; лучше написать прямой SQL-оператор PREPARE
.
Если вы все же используете литеральную строку, имейте в виду, что любые двойные кавычки, которые нужно включить в SQL-запрос, должны быть записаны в виде восьмеричных экранирований (\042
), а не в обычной идиоме C \"
. Это связано с тем, что строка находится внутри секции EXEC SQL
, поэтому лексер ECPG анализирует ее в соответствии с правилами SQL, а не C. Любые встроенные обратные косые черты будут обработаны позже в соответствии с правилами C; но \"
вызывает немедленную синтаксическую ошибку, поскольку она воспринимается как завершение литерала.
Примеры
char *stmt = "SELECT * FROM test1 WHERE a = ? AND b = ?"; EXEC SQL ALLOCATE DESCRIPTOR outdesc; EXEC SQL PREPARE foo FROM :stmt; EXEC SQL EXECUTE foo USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR outdesc;
Совместимость
PREPARE
указан в стандарте SQL.