3

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

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

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

CREATE OR REPLACE TYPE myTable IS TABLE OF myObject;

我现在想创建一个新的 myTable 实例,并myTable在 SQL Plus 命令行上添加几个硬编码的行,然后将对象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?

提前谢谢了 :)

4

1 回答 1

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;
于 2013-01-20T21:15:26.033 回答