oracle - 多次插入到类型表集合中

时间:2013-01-20 21:06:18

标签: oracle collections types select-into bulk-collect

我在oracle 11g中创建了以下对象。

CREATE OR REPLACE TYPE myObject as object(
fieldOne number,
fieldTwo number
);

并创建了一个新的表格类型的myObject;

CREATE OR REPLACE TYPE myTable IS TABLE OF myObject;

我现在想要创建一个新的myTable实例,并在SQL Plus命令行上将几个硬编码的行添加到myTable,然后将该对象作为参数传递给myProcedure

我尝试了以下内容;

declare newTable myTable;
begin
select myObject(50,5) bulk collect into newTable from dual;
select myObject(40,7) bulk collect into newTable from dual;
myProcedure(newTable);
commit;
end;

虽然第二个select into语句会覆盖第一个语句,但哪种方法有效。

我的问题是;如何向newTable添加多行?

非常感谢提前:)

1 个答案:

答案 0 :(得分:4)

declare
    newTable myTable;
begin
    newTable := myTable();
    newTable.extend(2); -- The desired size of the collection

    -- Oracle collections begin at index 1, not 0
    newTable(1) := myObject(50, 5);
    newTable(2) := myObject(40, 7);

    myProcedure(newTable);
end;