2017-02-25 85 views
1

我創建了輸出多行和多列的過程。如何調用包含SYS_REFCURSOR的過程

create or replace PROCEDURE MYPROC(
    C1 OUT SYS_REFCURSOR) 
AS 
BEGIN 
    OPEN C1 FOR SELECT * FROM A_TABLE; 
END MYPROC; 

編譯它時沒有錯誤。 但我不敢說我​​的程序正常像

Exec MYPROC; 

我得到這個錯誤。

Error report - 
ORA-06550: line 1, column 7: 
PLS-00306: wrong number or types of arguments in call to 'MYPROC' 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 

但是,當我沒有腳本運行,它顯示了我的預期結果。

那麼請幫助我如何執行此過程? 謝謝。

回答

1

錯誤是因爲你沒有傳遞任何參數的過程時,預計1

您需要定義一個指針變量,然後將變量傳遞到過程,最後讀它。

var cur refcursor; 
exec MYPROC(c1 => :cur); 
print cur; 

var cur refcursor; 
begin 
    MYPROC(c1 => :cur); 
end; 
/
print cur; 
+0

謝謝所以我需要創建SQL塊聲明變量REFCURSOR? –