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.