您的位置:首页 > 其它

截取以逗号分隔的字符串

2013-02-05 14:32 218 查看
--建用户类

CREATE TYPE my_tbl_type AS OBJECT(engineid VARCHAR2(20));

CREATE OR REPLACE TYPE myTableType as TABLE OF my_tbl_type;

--将字付串转化为表

CREATE OR REPLACE FUNCTION str2tbl(p_str IN VARCHAR2) RETURN myTableType

AS

    l_str VARCHAR2(1000):=p_str||',';

    l_n   NUMBER;

    l_data myTableType:=myTableType();

BEGIN

    LOOP

        l_n:=instr(l_str,',');

        EXIT WHEN (NVL(l_n,0)=0);

        l_data.extend;

        l_data(l_data.count):=my_tbl_type(SUBSTR(l_str,1,l_n-1));

        l_str:=SUBSTR(l_str,l_n+1);

    END LOOP;

    RETURN l_data;

END;

--示例应用

var aaa varchar2(1000)

exec :aaa:='04101025765,04101027465,04101027485,04101027695,04101027745'

select * from table(cast(str2tbl(:aaa) as myTableType));

COLUMN_VALUE

------------------------------

04101025765

04101027465

04101027485

04101027695

04101027745
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: