EXECUTE IMMEDIATE
EXECUTE IMMEDIATE — динамически подготовить и выполнить оператор
Синтаксис
EXECUTE IMMEDIATE строкаОписание
EXECUTE IMMEDIATE немедленно подготавливает и выполняет динамически задаваемый SQL-оператор, не получая при этом строки результата.
Параметры
строка#Строковая константа или переменная среды C, содержащая SQL-оператор, который нужно выполнить.
Примечания
Обычно в качестве строки задаётся ссылка на переменную, содержащую динамически создаваемый SQL-оператор. Использовать здесь строковую константу не очень полезно; с тем же успехом можно написать непосредственно SQL-оператор, не добавляя лишнюю команду EXECUTE IMMEDIATE.
Если вы всё же используете строковую константу, имейте в виду, что включаемые в SQL-оператор двойные кавычки нужно записывать в виде восьмеричной спецпоследовательности (\042), а не в виде \", как принято в C. Это объясняется тем, что данная строка находится внутри блока EXEC SQL, поэтому лексический анализатор ECPG разбирает её в соответствии с правилами SQL, а не C. Содержащиеся в этой строке символы обратной косой черты будут обработаны позже, по правилам C, но последовательность \" сразу вызовет ошибку синтаксиса, так как она будет воспринята как завершаю��ая строку.
Примеры
Пример выполнения оператора INSERT с применением команды EXECUTE IMMEDIATE и переменной среды С command:
sprintf(command, "INSERT INTO test (name, amount, letter) VALUES ('db: ''r1''', 1, 'f')");
EXEC SQL EXECUTE IMMEDIATE :command;Совместимость
Команда EXECUTE IMMEDIATE описана в стандарте SQL.