我試圖將(varchar
)數據數組傳遞到Oracle過程。 Oracle過程會從SQL * Plus或從另一個PL/SQL程序,像這樣既可以稱爲:將一組數據作爲輸入參數傳遞給Oracle過程
BEGIN
pr_perform_task('1','2','3','4');
END;
pr_perform_task
將讀取每個輸入參數和執行的任務。
我不確定我是如何實現這一目標的。我首先想到的是使用varray
類型的輸入參數,但我得到Error: PLS-00201: identifier 'VARRAY' must be declared
錯誤,當程序definiton看起來是這樣的:
CREATE OR REPLACE PROCEDURE PR_DELETE_RECORD_VARRAY(P_ID VARRAY) IS
總之,我怎麼能傳遞數據作爲一個數組,讓SP循環遍歷每個參數並執行任務?
我使用Oracle 10gR2作爲我的數據庫。
不錯回答。我想知道是否可以做你的第一個方法,但是對於't_in'中的元素數量是動態的(也就是說,每次調用'testing'都不同)?似乎需要至少硬編碼「MyType」的上限?不知何故可以解除這個限制嗎? – ggkmath 2012-08-26 01:02:49
@ggkmath,數組的大小並不重要,但是當您創建或更改TYPE時,您必須聲明VARRAY上限。 – DCookie 2012-08-26 01:23:04
是否有替代解決方案可以適應這種動態大小,也許沒有VARRAY?如果脫離主題,我可以開始一個新的線程。 – ggkmath 2012-08-26 03:34:33