PREPARE
PREPARE — подготовить оператор к выполнению
Синтаксис
PREPAREподготовленный_оператор
FROMстрока
Описание
Команда PREPARE
подготавливает к выполнению динамический оператор, задаваемый в виде строки. Она отличается от обычного SQL-оператора PREPARE, который также можно использовать во встраиваемых командах. Для обоих типов подготовленных операторов применяется команда EXECUTE.
Параметры
подготовленный_оператор
#Идентификатор для подготовленного запроса.
строка
#Строковая константа C или переменная среды C, содержащая один из подготавливаемых операторов: SELECT, INSERT, UPDATE или DELETE. Параметры, значения которых будут представлены при выполнении, обозначаются вопросительными знаками (
?
).
Примечания
Обычно в качестве строки
задаётся ссылка на переменную, содержащую динамически создаваемый 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.