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 created query manually it runs correctly. At this point I am able to determine what is causing the problem.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…