type VarTableType is table of varchar2(2000);
function str2varList( p_string in varchar2 ) return VarTableType pipelined ;
procedure p_add_pz(pzall in varchar2)
is
begin
[color=#FF0000] insert into aaa(a2) select *from table(str2varlist(pzall));
如果按照这种写法,在调用过程时出错,如果直接在函数当中输入数值则没有问题.end p_add_pz;SQL> exec pkg_addpz.p_add_pz('2008,01,00,aaa$2008,01,00,bbb$2008,01,00,ccc')
BEGIN pkg_addpz.p_add_pz('2008,01,00,aaa$2008,01,00,bbb$2008,01,00,ccc'); END;*
ERROR 位于第 1 行:
ORA-22905: 无法从非嵌套表项访问行
ORA-06512: 在"LC0019999.PKG_ADDPZ", line 104
ORA-06512: 在line 1[/color] procedure p_add_pz(pzall in varchar2)
is
begin insert into aaa(a2) select *from table(str2varlist('2008,01,00,aaa$2008,01,00,bbb$2008,01,00,ccc'));
end p_add_pz;
SQL> exec pkg_addpz.p_add_pz('a')PL/SQL 过程已成功完成。SQL> select *from aaa
2 / A1
----------
A2
--------------------------------------------------------------------------------2008,01,00,aaa
2008,01,00,bbb
2008,01,00,ccc
function str2varList( p_string in varchar2 ) return VarTableType pipelined ;
procedure p_add_pz(pzall in varchar2)
is
begin
[color=#FF0000] insert into aaa(a2) select *from table(str2varlist(pzall));
如果按照这种写法,在调用过程时出错,如果直接在函数当中输入数值则没有问题.end p_add_pz;SQL> exec pkg_addpz.p_add_pz('2008,01,00,aaa$2008,01,00,bbb$2008,01,00,ccc')
BEGIN pkg_addpz.p_add_pz('2008,01,00,aaa$2008,01,00,bbb$2008,01,00,ccc'); END;*
ERROR 位于第 1 行:
ORA-22905: 无法从非嵌套表项访问行
ORA-06512: 在"LC0019999.PKG_ADDPZ", line 104
ORA-06512: 在line 1[/color] procedure p_add_pz(pzall in varchar2)
is
begin insert into aaa(a2) select *from table(str2varlist('2008,01,00,aaa$2008,01,00,bbb$2008,01,00,ccc'));
end p_add_pz;
SQL> exec pkg_addpz.p_add_pz('a')PL/SQL 过程已成功完成。SQL> select *from aaa
2 / A1
----------
A2
--------------------------------------------------------------------------------2008,01,00,aaa
2008,01,00,bbb
2008,01,00,ccc
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货