2016-02-18 183 views
1

我看到在這裏有很多類似的問題在計算器中,但沒有人回答我的問題。PLS-00201:標識符'CURSOR'必須聲明

問題在哪裏?

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; 
+1

你不需要'DECLARE CURSOR'語句嗎? – jarlh

+0

該過程定義沒有錯。當fdo你得到那個錯誤? –

+0

當我嘗試執行程序時,我收到了此消息。我雖然也許可以是一些特別的許可,但我真的不知道。 – pmreis

回答

1

有一個在你的代碼沒有問題。問題可能在於/ proc函數調用此過程。確保光標在那裏定義。 我將您的表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; 
+0

非常感謝你! – pmreis

相關問題