Чем различаются операторы EXECUTE и EXECUTE DIRECT процедурного языка?
Текст SQL-запроса оператора EXECUTE
транслируется (в частности, проверяется синтаксически и семантически) в процессе трансляции процедуры, т.е. к моменту трансляции процедуры текст SQL-запроса оператора EXECUTE
должен быть полностью определен.
В отличие от оператора EXECUTE
, текст SQL-запроса оператора EXECUTE DIRECT
транслируется и готовится к обработке непосредственно в процессе выполнения хранимой процедуры. Это позволяет формировать SQL-запросы динамически, например, с помощью функции MAKESTR
или конкатенации строк: создавать новый SQL-запрос «с нуля» или модифицировать указанный в тексте процедуры шаблон SQL-запроса.