2012-06-13 79 views
0

我需要驗證一個具有out遊標參數的過程。具體而言,我需要查看什麼是檢索。如何在PLSQL塊中探索出遊標參數?

我試試這個:

declare 
    type cursor_out is ref cursor; 
    cur cursor_out; 
    fila activ_economica%rowtype; 
    procedure test(algo out cursor_out) is 
    begin 
    open algo for select * from activ_economica; 
    end; 
begin 
    test(cur); 
    for i in cur loop 
    fila := i; 
    dbms_output.put(fila.id_activ_economica ||' '); 
    dbms_output.put_line(fila.nom_activ_economica); 
    end loop; 
end; 

的錯誤是 「小人」 一直沒有被定義。

回答

2

不能使用遊標FOR循環與裁判光標,你必須這樣做:

declare 
    type cursor_out is ref cursor; 
    cur cursor_out; 
    fila activ_economica%rowtype; 
    procedure test(algo out cursor_out) is 
    begin 
    open algo for select * from activ_economica; 
    end; 
begin 
    test(cur); 
    loop 
    fetch cur into fila; 
    exit when cur%notfound; 
    dbms_output.put(fila.id_activ_economica ||' '); 
    dbms_output.put_line(fila.nom_activ_economica); 
    end loop; 
    close cur; 
end; 

注:不再有任何需要定義自己的REF遊標類型(除非你是一個很老的Oracle版本)。你可以直接使用SYS_REFCURSOR:

declare 
    cur sys_refcursor; 
    ... 
+0

excelent,我搜索了很多,我找不到任何東西,你救了我一天的工作:D – mjsr