PREPARE — подготовка оператора к выполнению
PREPAREprepared_nameпредложение FROMстрока
PREPARE подготавливает оператор, динамически
заданный в виде строки, для выполнения. Это отличается от прямого оператора SQL PREPARE, который также может
использоваться во внедренных программах. Оператор EXECUTE
используется для выполнения любого вида подготовленного оператора.
При обычном использовании параметр строка представляет собой ссылку на главную переменную, содержащую динамически сконструированный оператор SQL. Использование строковой константы малополезно;
с тем же успехом можно просто написать прямой оператор SQL PREPARE
statement.
Если вы используете строковый литерал, имейте в виду, что любые двойные кавычки, которые вы захотите включить в оператор SQL, должны быть записаны в виде восьмеричных escape-последовательностей (\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.