Чем различаются операторы EXECUTE и EXECUTE DIRECT процедурного языка?

Текст SQL-запроса оператора EXECUTE транслируется (в частности, проверяется синтаксически и семантически) в процессе трансляции процедуры, т.е. к моменту трансляции процедуры текст SQL-запроса оператора EXECUTE должен быть полностью определен.

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