Oracle PLSQL – 在不存在的表上声明游标
发布时间:2021-05-15 10:42:47 所属栏目:站长百科 来源:网络整理
导读:我想在不存在的表上声明游标.虽然,我的措施没有编译. 此表是姑且表,由预处理赏罚建设.它将存在于运行时,但在编译时它是另一个故事. 对付我选择/更新其他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; / (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |