oracle-多次插入类型表集合

oracle-多次插入类型表集合,oracle,collections,types,select-into,bulk-collect,Oracle,Collections,Types,Select Into,Bulk Collect,我在Oracle11g中创建了以下对象 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

我在Oracle11g中创建了以下对象

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


非常感谢:)

完美:)非常感谢!一个问题-在begin语句之后,为什么有newTable:=myTable();当newTable已经声明为myTable类型时?@timbo:如果我理解正确,
newTable:=myTable()
初始化
newTable
。在该语句之前,
newTable
未初始化。在这种状态下,任何使用
newTable
都会导致出现错误。@timbo仅供参考,一种稍微短一点的方法就是
newTable:=myTable(myObject(50,5),myObject(40,7))ie不需要初始化或扩展。@DazzaL谢谢-这很好地解决了问题:)
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;