Why does running this query with EXECUTE IMMEDIATE cause it to fail?
问题 I am writing a PL/SQL procedure that needs to to dynamically generate some queries, one of which involves creating a temporary table using results from a query taken as a parameter. CREATE OR REPLACE PROCEDURE sqlout(query IN VARCHAR2) IS BEGIN EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ');'; END; It compiles correctly, but even with very simple queries such as with: BEGIN sqlout('SELECT * FROM DUAL'); END; IT throws ORA-00911: invalid character . If I run the