Я пишу процедуру PL / SQL, которая должна динамически генерировать некоторые запросы, один из которых включает создание временной таблицы, используя результаты запроса, принятого в качестве параметра.
CREATE OR REPLACE PROCEDURE sqlout(query IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ');';
END;
Он компилируется правильно, но даже с очень простыми запросами, такими как:
BEGIN
sqlout('SELECT * FROM DUAL');
END;
ЭТО бросает ORA-00911: invalid character
. Если я запускаю созданный запрос вручную, он выполняется правильно. На данный момент я могу определить причину проблемы.