Oracle中table类型数据赋值给cursor

在Type中创建了一个类型:
create or replace type bb_ptyxztqk_Table as table of bb_ptyxztqk_type;
里面放自定义的record类型,现在要将table中的数据放置到cursor中,怎么弄?
这样弄不行:
open cur for
select r_index, r_name, r_this, r_last, r_minus
from table(cast(obj_type_tab AS bb_ptyxztqk_type));
求大神指点!
整体代码:
类型:
create or replace type bb_ptyxztqk_Table as table of bb_ptyxztqk_type;
create or replace type bb_ptyxztqk_Type as object(
d_index number,
d_name varchar2(100),
d_this number,
d_last number,
d_minus number
);
sql:
PROCEDURE pro_getdata(enddate in varchar2, cur out type_cursor) is
Type RecType Is Record(
r_index number,
r_name varchar2(100),
r_this number,
r_last number,
r_minus number);
Type TabType Is Table Of RecType Index By Binary_Integer;
myTab TabType;
obj_type_tab bb_ptyxztqk_table := bb_ptyxztqk_table();
l_index number := 1;
begin
if (l_index = 1) then
myTab(l_index).r_index := 1;
myTab(l_index).r_name := '上线单位';
myTab(l_index).r_this := 123;
myTab(l_index).r_last := 456;
myTab(l_index).r_minus := 333;
end if;
l_index := myTab.First;
for l_in in l_index .. myTab.count Loop
obj_type_tab.EXTEND;
obj_type_tab(obj_type_tab.LAST) := bb_ptyxztqk_type(myTab(l_index).r_index,
myTab(l_index).r_name,
myTab(l_index).r_this,
myTab(l_index).r_last,
myTab(l_index).r_minus);
l_index := myTab.Next(l_index);
end Loop;
open cur for
select r_index, r_name, r_this, r_last, r_minus
from table(cast(obj_type_tab AS bb_ptyxztqk_type));

end;

看看这个
http://blog.csdn.net/yhmhappy2006/article/details/5552574

CREATE OR REPLACE NONEDITIONABLE PROCEDURE pro_getdata(enddate in varchar2, cur out sys_refcursor) is
Type RecType Is Record(
r_index number,
r_name varchar2(100),
r_this number,
r_last number,
r_minus number);
Type TabType Is Table Of RecType Index By Binary_Integer;

myTab TabType;

obj_type_tab bb_ptyxztqk_table;
l_index number := 1;

begin
if (l_index = 1) then
myTab(l_index).r_index := 1;
myTab(l_index).r_name := '上线单位';
myTab(l_index).r_this := 123;
myTab(l_index).r_last := 456;
myTab(l_index).r_minus := 333;
end if;
l_index := myTab.First;
for l_in in l_index .. myTab.count Loop
obj_type_tab.EXTEND;
obj_type_tab(obj_type_tab.LAST) := bb_ptyxztqk_type(myTab(l_index).r_index,
myTab(l_index).r_name,
myTab(l_index).r_this,
myTab(l_index).r_last,
myTab(l_index).r_minus);
l_index := myTab.Next(l_index);
end Loop;
open cur for
select d_index, d_name, d_this, d_last, d_minus
from table(obj_type_tab);
end;