日期:2014-05-16 浏览次数:20656 次
至于管道函数的用法在上一遍文章已经介绍,在此不再细说.直接看函数.
1.创建type对象.
create or replace type type_split as table of varchar2(4000);
2.创建split函数
create or replace function test_split(p_list VARCHAR2, p_sep VARCHAR2) return type_split PIPELINED IS l_idx PLS_INTEGER; v_list VARCHAR2(32767) := p_list; begin LOOP l_idx := instr(v_list, p_sep); IF l_idx > 0 THEN PIPE ROW(substr(v_list, 1, l_idx - 1)); v_list := substr(v_list, l_idx + length(p_sep)); ELSE PIPE ROW(v_list); EXIT; END IF; END LOOP; RETURN; end test_split;
3.执行该函数
SELECT * FROM table(test_split('aaa,bbb,ccc',',')) ;
4.输出结果
COLUMN_VALUE 1 aaa 2 bbb 3 ccc
?
5.总结:此函数可以在存储过程(procedure)中使用,当遇到需要用逗号进行分隔的字符串,可以用这种方法就行查询,之后用游标(cursor)来分别提取每个字符串.
?