我在 stackoverflow 中看到有很多类似的问题,但没有人回答我的问题。
问题出在哪里?
CREATE OR REPLACE
PROCEDURE "PR_TESTE"( sl_cursor OUT SYS_REFCURSOR)
IS
stm varchar(30000);
BEGIN
stm := 'SELECT * from tb_device_type';
OPEN sl_cursor FOR stm ;
END;
最佳答案
你的代码没有问题。问题可能出在调用此过程的函数/过程中。确保在那里定义了游标。 我将您的表 tb_device_type 替换为选项卡。此代码段工作正常。
CREATE OR REPLACE
PROCEDURE "PR_TESTE"( sl_cursor OUT SYS_REFCURSOR)
IS
stm varchar(30000);
BEGIN
stm := 'SELECT * from tab';
OPEN sl_cursor FOR stm ;
END;
-----
declare
l_cur sys_refcursor;
l_tname tab.tname%type;
l_tabtype tab.tabtype%type;
l_clusterid tab.clusterid%type;
begin
pr_teste(l_cur);
loop
fetch l_cur into l_tname, l_tabtype, l_clusterid;
exit when l_cur%notfound;
dbms_output.put_line(l_tname);
end loop;
end;
关于sql - PLS-00201 : identifier 'CURSOR' must be declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35482258/