2014-04-18 74 views
0

我有以下的自定義類型:從數組元素插入,而無需使用用於環路

CREATE OR REPLACE TYPE INJURED_PERSON 
AS 
    OBJECT 
    (
    PIN VARCHAR2(7), 
    FNAME VARCHAR2(20), 
    LNAME VARCHAR2(20), 
    PATRONYMIMC VARCHAR2(20), 
    POSITIONID NUMBER(8,0), 
    REPORTID NUMBER(10,0), 
    OUTCOME NUMBER(1,0)); 

和用作上述類型的表中的另一個定製類型:

CREATE OR REPLACE TYPE INJURED_PEOPLE 
     AS TABLE OF INJURED_PERSON; 

在另一方面我有一個只接受一個I​​NJURED_PEOPLE類型參數的存儲過程。在這個過程中,我想讓Input參數中的INJURED_PERSONs並將它們插入到表中。我知道我可以循環訪問數組(我的輸入參數)並逐個插入。但是,我願做這樣的事情:

INSERT INTO my_tab上SELECT 東西 FROM MyInputParam.Pin

這是可能在Oracle中?

回答

1

也許你正在尋找的東西(谷歌 「Oracle表函數」):

SQL> create table my_tab(pin VARCHAR2(7)) 
    2/


SQL> declare 
    2 arr INJURED_PEOPLE := INJURED_PEOPLE(); 
    3 begin 
    4 arr.extend(2); 
    5 arr(1) := INJURED_PERSON('APIN',null,null,null,null,null,null); 
    6 arr(2) := INJURED_PERSON('BPIN',null,null,null,null,null,null); 
    7 INSERT INTO my_tab SELECT x.PIN FROM table(arr) x; 
    8 end; 
    9/

SQL> select * from my_tab; 

PIN                    
-------                   
APIN                    
BPIN                    
相關問題