我有以下自定义类型:
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;
另一方面,我有一个存储过程只接受一个INJURED_PEOPLE类型的参数。在程序中我想在Input参数中获取INJURED_PERSON并将它们插入到表中。我知道我可以遍历数组(我的输入参数)并逐个插入。但我想做这样的事情:
INSATE INTO MY_TAB SELECT something FROM MyInputParam.Pin
这可能在Oracle中实现吗?
答案 0 :(得分: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