我在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
语句覆盖了第一个ojit语句,但哪种排序仍然有效。我的问题是;如何将多个行添加到newTable?
提前谢谢了 :)
最佳答案
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;