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: 无效数据类型
...全文
70 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
doer_ljy 2008-03-21
  • 打赏
  • 举报
回复
CREATE OR REPLACE PACKAGE C20.DOERPAG
IS
TYPE RtnRcd IS RECORD (
A VARCHAR2(100),
B VARCHAR2(100));
TYPE RtnTab IS TABLE OF RtnRcd INDEX BY BINARY_INTEGER;
FUNCTION F1(PM1 IN VARCHAR2) RETURN RtnTab;
PROCEDURE P1;
END;

CREATE OR REPLACE PACKAGE BODY C20.DOERPAG
IS
FUNCTION F1(PM1 IN VARCHAR2) RETURN RtnTab
IS
rst RtnTab;
rcd RtnRcd;
TMP1 VARCHAR2(4000);
PMIN VARCHAR2(4000);
POS NUMBER;
I NUMBER;
BEGIN
I := 0;
PMIN := PM1;
LOOP
EXIT WHEN nvl(LENGTH(PMIN),0) = 0;
POS := INSTR(PMIN,',');
IF POS > 0 THEN
TMP1 := SUBSTR(PMIN,1,POS-1);
PMIN := SUBSTR(PMIN,POS+1);
rcd.A := 'A_' || TMP1;
rcd.B := 'B_' || TMP1;
rst(I) := rcd;
I := I + 1;
ELSE
TMP1 := SUBSTR(PMIN,1);
PMIN := '';
rcd.A := 'A_' || TMP1;
rcd.B := 'B_' || TMP1;
rst(I) := rcd;
I := I + 1;
END IF;
END LOOP;
return rst;
END;
PROCEDURE P1 IS
rst RtnTab;
pm varchar2(1000);
BEGIN
pm := '111,222,333,444';
rst := F1(pm);
dbms_output.put_line(rst.count);
END;
END;
2009新的FAQ,是开发人员咨询MTK问题时MTK给的回复,一个不错的资源 1.1 PhoneBook............................................................................................................................................... 12 1.1.1 电话本name 长度如何从30 修改为60................................................................................................ 12 1.1.2 如何添加紧急号码?............................................................................................................................ 12 1.1.3 如何使得在通话记录条数为20 时能够将相同号码分开显示? ............................................................. 12 1.1.4 在手机上存SOS Numeber,为什么存入5 个不同的default 值显示均为第一个?................................. 12 1.1.5 如何增加电话薄数目? ........................................................................................................................ 13 1.1.6 在拔打电话或来电时,在号码匹配时,软件仅做了号码后面7 位数字的匹配,如何修改?................. 13 1.2 Imput Method ........................................................................................................................................... 13 1.2.1 怎样在同一工程使用不同Size 的汉字? .......................................................................................... 13 1.2.2 多语言混合显示时,出现某种语言显示位置偏高或偏低。................................................................... 14 1.2.3 ZI V7 无法出现候选字或者候选字错乱.................................................................................................... 14 1.2.4 同一个工程上加多个文字库.............................................................................................................. 14 1.2.5 T9 输入法“*”键和“#”键功能的两种表现形势............................................................................... 15 1.2.6 08A0812 前版本zi 笔画输入法输入0 键输出空格................................................................................... 16 1.2.7 自己绘制拨号字体 BMP,用 MCT tool 转换成 BDF 的方法。............................................................. 17 1.3 AT Command ........................................................................................................................................... 17 1.3.1 为何在无卡时拨打紧急号码后,发送AT+CLCC 会返回错误? ........................................................... 17 1.3.2 AT Command 无回显。.......................................................................................................................... 17 1.3.3 在设置编码格式为UCS2 时,使用AT+cusd=1,"*100#"返回error ...................................................... 18 1.4 NVRAM .................................................................................................................................................... 18 1.4.1 非mmi task 读NVRAM。................................................................................................................ 18 1.4.2 连续调用ReadRecord 读取NVRAM 的数据出错的原因。.................................................................. 19 1.4.3 修改NVRAM,不升级 Bin,清除用户记录且保留Calibration Data ,IMEI 等数据。............................ 20 1.5 Call related ............................................................................................................................................... 21 1.5.1 是否可以客制化拒接电话的原因? ...................................................................................................... 21 1.5.2 呼叫转移icon 不显示。....................................................................................................................... 21 1.5.3 手机嵌入一些默认的快速拨号号码。............................................................................................... 22 1.5.4 有时候电话已经被挂断,但是手机还去进行attach user connection ................................................... 23 1.5.5 为何使用ATD 命令拨打电话失败?..................................................................................................... 23 1.5.6 UCM 的作用。....................................................................................................................................... 23 1.5.7 在MT call setup 时,可以选择answer 或reflect,其 reflect 是什么功能?..................................... 24 1.5.8 如何将USSD 字串*n(n 表示1-9)作为拨号号码。........................................................................... 24 1.6 SMS.......................................................................................................................................................... 24 1.6.1 短信编辑插入图片,内容都是第一张图片。....................................................................................... 24

17,140

社区成员

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

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