SOS...存储过程中如何调用函数返回的结果集????
whxxr 2008-03-21 12:15:25
CREATE OR REPLACE PACKAGE ABC
as
type VarTableType is table of varchar2(20000);
function str2varList2( p_string in varchar2 ) return VarTableType;
procedure straddtable(addstr in varchar2);
END ABC;
CREATE OR REPLACE PACKAGE BODY ABC AS
function str2varList2( p_string in varchar2 ) return VarTableType
as
v_str long default p_string || '$';
v_n varchar2(20000);
v_data VarTableType := VarTableType();
begin
loop
v_n :=instr( v_str, '$' );
exit when (nvl(v_n,0) = 0);
v_data.extend;
v_data( v_data.count ) := ltrim(rtrim(substr(v_str,1,v_n-1)));
v_str := substr( v_str, v_n+1 );
end loop;
return v_data;
end ;
procedure straddtable(addstr in varchar2)
as
s1 varchar2(20000):='';
ss1 varchar2(20000):='';
kjnd varchar2(4):='';
begin
s1:=addstr;
--s1格式:'2008,01,00,aaa$,2008,01,00,bbb$,2008,01,00,ccc'
--在这里如何调用 STR2VARLIST2(S1)的返回结果集呀.怎么取出3条记录
-- 2008,01,00,AAA
--2008,01,00,BBB
--2008,01,00,CCC
--不知道如何写
end straddtable;
END ABC;
因为是写在一个包里,在SQL PLUS中运行出错,不知道什么原因.如果不是写在包里没有问题.
SQL> select str2varlist2('2008,01,00,aaa$2008,01,00,bbb$2008,01,00,ccc') from dual
2 /
STR2VARLIST2('2008,01,00,AAA$2008,01,00,BBB$2008,01,00,CCC')
--------------------------------------------------------------------------------
VARTABLETYPE('2008,01,00,aaa', '2008,01,00,bbb', '2008,01,00,ccc')
SQL> select abc.str2varlist2('2008,01,00,aaa$2008,01,00,bbb$2008,01,00,ccc') from dual
2 /
select abc.str2varlist2('2008,01,00,aaa$2008,01,00,bbb$2008,01,00,ccc') from dual
*
ERROR 位于第 1 行:
ORA-00902: 无效数据类型