Oracle PLSQL – 在不存在的表上声明游标
发布时间:2021-05-15 10:12:20 所属栏目:百科 来源:网络整理
导读:我想在不存在的表上声明游标.当然,我的程序没有编译. 此表是临时表,由预处理创建.它将存在于运行时,但在编译时它是另一个故事. 对于我选择/更新其他DML操作,我已经使用过了 从tmp_table’执行IMMEDIATE’操作’ 但我找不到游标的解决方法. 有办法吗? 基本
我想在不存在的表上声明游标.当然,我的程序没有编译. 此表是临时表,由预处理创建.它将存在于运行时,但在编译时它是另一个故事. 对于我选择/更新其他DML操作,我已经使用过了 从tmp_table’执行IMMEDIATE’操作’ 但我找不到游标的解决方法. 有办法吗? 基本上,我希望这个编译 drop table test; /*from this on should compile*/ DECLARE cursor c is select * from test; BEGIN for reg in c LOOP /*...*/ END LOOP; END; 更新 到目前为止还没有编译: SQL> declare 2 c sys_refcursor; 3 BEGIN 4 open c for 'select * from pepito'; -- 'pepito' does not exist 5 close c; 6 end; 7 / declare * ERROR at line 1: ORA-00942: table or view does not exist ORA-06512: at line 4 应该使用CREATE PROCEDURE,谢谢. 提前致谢. 您应该能够像这样定义光标:DECLARE c SYS_REFCURSOR; BEGIN OPEN c FOR 'SELECT * FROM dual'; CLOSE c; END; 你也可以绑定参数: OPEN c FOR 'SELECT * FROM dual WHERE DUMMY = :1' USING 'X'; 有关详细信息,请参阅OPEN-FOR Statement的Oracle文档. 使用存储过程的示例 CREATE OR REPLACE PROCEDURE test IS c SYS_REFCURSOR; BEGIN OPEN c FOR 'SELECT * FROM fdfdfdfdfd'; CLOSE c; END; / (编辑:源码门户网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐