Sql PLS-00201:标识符';光标';必须申报
我在stackoverflow中看到了很多类似的问题,但是没有人回答我的问题 问题在哪里Sql PLS-00201:标识符';光标';必须申报,sql,oracle,plsql,Sql,Oracle,Plsql,我在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; 及 您的代码中没有问题。问题可能出在调用此
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;
及
您的代码中没有问题。问题可能出在调用此过程的函数/proc中。确保光标已在此处定义。 我将您的表tb\U设备类型替换为tab。这段代码很好用
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;
您不需要一个
声明游标语句吗?该过程定义没有问题。你什么时候收到那个错误的?我在尝试执行这个过程时收到这个消息。我想可能需要特别许可,但我真的不知道。