为什么运行该查询使用EXECUTE直接原因是失败的?
-
23-08-2019 - |
题
我编写需要动态生成某些查询一个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;
IT抛出ORA-00911: invalid character
。如果我手动运行创建的查询其正常运行。在这一点上,我能确定是什么原因造成的问题。
解决方案
尝试失去“;”从字符串内所执行的立即。
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ')';
不隶属于 StackOverflow