2017-09-01 15 views
0

其實我的要求是,我有3個表,所以我需要爲每個表創建類型或將類型合併到所有表。但在java開發人員必須將多個參數發送到我的過程,那麼如何獲得單個類型的多個值並將其插入到表中?如何在PLSQL中使用集合類型,同時從前端Java頁面接收多個值?

對象類型

CREATE OR REPLACE TYPE "POL_QUAT_TYPE" 
    IS OBJECT (V_POLICY_NO VARCHAR2 (30), 
      V_FOREIGN_POLICY VARCHAR2 (1)); 

TABLETYPE

CREATE OR REPLACE TYPE POL_QUAT_table IS TABLE OF POL_QUAT_TYPE 

樣品過程

CREATE OR REPLACE PROCEDURE TEST1 (A POL_QUAT_TYPE) IS 
    B VARCHAR2(100); 
    C VARCHAR2(100); 
BEGIN 
    B:=A(1); 
    C:=A(1); 

    INSERT INTO TEST (PART, B) 
    VALUES (B,C); 

    COMMIT; 
END; 

調用這個過程

begin 
    test1('a','b'); 
end; 

我想知道如何獲得價值從集合類型(A,B),雖然過程。

+0

如何在程序中讀取集合類型值 BEGIN pr_perform_task('1','2','3','4'); END; 程序pp(inp p_type)IS BEGIN(如何讀取1,2,3,4)使用此類型的值(ptype)end; –

+0

因此,如果我明白你想要正確實現的目標,你有一個集合,你想要將集合的所有元素插入到表中?目前,您正在考慮循環訪問數組以獲取集合中的值,以便您可以調用test1過程 - 是否正確? – Boneist

+0

嗯...和即時通訊嘗試將多個數據傳遞到單個收集參數。 –

回答

0

好吧,你可以插入對象的數組中的內容到表像這樣:

CREATE OR REPLACE TYPE "POL_QUAT_TYPE" 
    IS OBJECT (V_POLICY_NO VARCHAR2 (30), 
      V_FOREIGN_POLICY VARCHAR2 (1)); 
/

CREATE OR REPLACE TYPE POL_QUAT_table IS TABLE OF POL_QUAT_TYPE; 
/

CREATE OR REPLACE PROCEDURE TEST1 (p_a in POL_QUAT_table) 
as 
BEGIN 
    INSERT INTO TEST (PART, B) 
    select t.v_policy_no, 
     t.v_foreign_policy 
    from table(p_a) t; 

    COMMIT; 
END; 
/

我創建a test case證明它工作在甲骨文LiveSQL。

這意味着您可以一次性插入數組的所有內容,而不必循環訪問數組並一次插入一條記錄,所以它應該更具性能。

+0

謝謝你..先生..對我很有幫助.. –

+0

我很高興。希望下次您在這裏提出問題時,您將知道如何使用足夠的信息編寫它,以便我們可以更快地幫助您* {:-)(這很令人沮喪想要幫助某人,但由於缺乏信息而無法工作!我們**希望**幫助!) – Boneist

+1

我是新來的這個股權轉讓...讓我糾正它在未來.. –

相關問題