2012-12-18 35 views
2

我需要在oracle中調用存儲過程。其中一個參數就像是一個用戶定義的類型,以便:調用Oracle存儲proc用戶定義類型數組

CREATE OR REPLACE TYPE MY_PK AS OBJECT 
(
    SOURCE_ID INTEGER, 
    ACCT_SYSTEM VARCHAR2(255) 
) 
/

CREATE OR REPLACE TYPE MY_PK_ARR AS TABLE OF MY_PK 
/

PROCEDURE get_data(pk_in IN my_pk_arr, my_coursor OUT t_cursor) 
IS 
... 
END 

我想叫它像這樣:

var pk   my_pk_arr 
var my_cursor t_cursor 
execute myschema.mypackage.get_data (pk , :my_cursor); 

我無法弄清楚如何創建陣列。這是可能的,或者我需要創建某種表來做到這一點?

謝謝

回答

1

如果您通過腳本調用它,就會這樣調用它。 sqlplus不支持用戶定義的數組等。

declare 
    v_pk my_pk_arr; 
    v_cur t_cursor; 
begin 

    v_pk := MY_PK_ARR(MY_PK(1, 'a'), MY_PK(2, 'b')); -- or build in a loop etc. 
    get_data(v_pk, v_cur); 

end; 
/
+0

它的工作原理謝謝 – Fabio

相關問題