管道 两个表传递数据 发生:不一致的数据类型

yumable 2009-03-30 10:50:47
create or replace type place as object
(
line1 varchar2(20),
line2 varchar2(20),
city varchar2(20),
state_code varchar2(20),
zip varchar2(20)
);

create type placelist as table of place;

create or replace function f_table_obj_pipelined
return placelist pipelined
is
v_address place;
begin
for i in 1..3 loop
if(i = 1) then
v_address :=
place('20','vy','ny','1','usa');
elsif ( i = 2) then
v_address :=
place('21','nj','nj','2','js');
elsif (i = 3) then
v_address :=
place('22','ah','ah','3','zg');
end if;
pipe row(v_address);
end loop;
return;
end;
/
--select * from table(f_table_obj_pipelined);
create or replace function f_table_obj_pipelined1(p_ref_cursor sys_refcursor)
return placelist pipelined
is
v_address1 place;
v_address2 place;
begin loop
fetch p_ref_cursor into v_address1;
exit when p_ref_cursor%notfound;
if(v_address1.city = 'ny') then
v_address2.line1 := '24';
v_address2.line2 := 'cd';
v_address2.city := 'cd';
v_address2.state_code := '4';
v_address2.zip := 'sc';
elsif (v_address1.city ='nj') then
v_address2.line1 := '25';
v_address2.line2 := 'aq';
v_address2.city := 'aq';
v_address2.state_code := '5';
v_address2.zip := 'aq';
end if;
pipe row(v_address2);
end loop;
close p_ref_cursor;
return;
end;
/

select * from table(f_table_obj_pipelined1(cursor(select * from table(f_table_obj_pipelined()))));
红色部分提示数据类型不一致错误???????
f_table_obj_pipelined作为第一个管道表函数,f_table_obj_pipelined1作为第二个管道表函数]

请大侠们指点,谢谢
...全文
47 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧