Gam*_*eak 9 sql oracle plsql dynamic-sql ora-00911
我正在编写一个需要动态生成一些查询的PL/SQL过程,其中一个过程涉及使用作为参数的查询结果创建临时表.
CREATE OR REPLACE PROCEDURE sqlout(query IN VARCHAR2)
IS
BEGIN
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ');';
END;
Run Code Online (Sandbox Code Playgroud)
它编译正确,但即使使用非常简单的查询,例如:
BEGIN
sqlout('SELECT * FROM DUAL');
END;
Run Code Online (Sandbox Code Playgroud)
IT抛出ORA-00911: invalid character.如果我手动运行创建的查询,它会正确运行.在这一点上,我能够确定导致问题的原因.
Pet*_*ros 30
试着失去";" 从您执行立即的字符串内部.
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE tmp_tab AS (' || query || ')';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15669 次 |
| 最近记录: |