Oracle10g oraclepl/sql类型
是否可以在内存中填充一些oracle对象(如集合)并在其他pl/sql块中使用它?比如:Oracle10g oraclepl/sql类型,oracle10g,Oracle10g,是否可以在内存中填充一些oracle对象(如集合)并在其他pl/sql块中使用它?比如: create type myType as objects (id number, name varchar2(40)); create type myTabType is table of myType; procedure populateMyTabType is vType myTabType := myTabType(); begin for i in (select id,name
create type myType as objects
(id number, name varchar2(40));
create type myTabType is table of myType;
procedure populateMyTabType is
vType myTabType := myTabType();
begin
for i in (select id,name
from employees) loop
vType.extend;
vType(vType.last) := myType(i.id, i.name);
end loop;
end;
现在我想通过pl/sql块来迭代myTabType。
我能做这个吗?怎么做
谢谢你例如:
create type myType as object
(id number, name varchar2(40));
create type myTabType is table of myType;
create or replace function populateMyTabType
return myTabType
is
vType myTabType := myTabType();
begin
for i in (select 1 id,'name' name
from dual) loop
vType.extend;
vType(vType.COUNT) := myType(i.id, i.name);
end loop;
return vType;
end populateMyTabType;
create or replace procedure iterateMyTabType(
p_mytype IN myTabType
)
is
begin
for i in p_mytype.FIRST..p_mytype.LAST
LOOP
dbms_output.put_line(p_mytype(i).id || ' ' || p_mytype(i).name);
end loop;
end iterateMyTabType;
begin
iterateMyTabType(populateMyTabType);
end;
1 name
但如果可以,你需要使用
PS:请注意,我更改了
populateMyTabType
中for
子句中的select
语句,您需要使用自己的选择。您想做什么?我不明白,如果您想迭代vType
变量,请在vType.FIRST..vType.LAST循环中为I使用。。。端环代码>是的,但我想填充它,而不是通过另一个pl/sql来实现。我的意思是,在我运行这个过程之后,从不同的pl/sql块来迭代集合,正如您所说的。