PREPARE#

PREPARE

PREPARE

PREPARE — подготовить оператор для выполнения

Синтаксис

PREPARE prepared_name FROM string

Описание

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

Параметры

prepared_name

Идентификатор для подготовленного запроса.

string

Строка-литерал или переменная хоста, содержащая подготавливаемый SQL-запрос, один из SELECT, INSERT, UPDATE или DELETE. Используйте вопросительные знаки (?) для значений параметров, которые будут предоставлены при выполнении.

Примечания

В типичном использовании, 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.

См. также

EXECUTE