>  기사  >  데이터 베이스  >  oracle 的split函数

oracle 的split函数

WBOY
WBOY원래의
2016-06-07 15:51:061068검색

PL/SQL 中没有split函数,需要自己写。 代码: createorreplacetypetype_splitastableofvarchar2(50);--创建一个 type ,如果为了使split函数具有通用性,请将其size设大些。 --创建function createorreplacefunctionsplit ( p_listvarchar2, p_sepvarchar2:

PL/SQL 中没有split函数,需要自己写。

  代码:

 

oracle 的split函数create or replace type type_split as table of varchar2(50);  --创建一个  type  ,如果为了使split函数具有通用性,请将其size 设大些。

oracle 的split函数

oracle 的split函数

oracle 的split函数--创建function

oracle 的split函数create or replace function split

oracle 的split函数(

oracle 的split函数   p_list varchar2,

oracle 的split函数   p_sep varchar2 := ','

oracle 的split函数)  return type_split pipelined

oracle 的split函数 is

oracle 的split函数   l_idx  pls_integer;

oracle 的split函数   v_list  varchar2(50) := p_list;

oracle 的split函数begin

oracle 的split函数   loop

oracle 的split函数      l_idx := instr(v_list,p_sep);

oracle 的split函数      if l_idx > 0 then

oracle 的split函数          pipe row(substr(v_list,1,l_idx-1));

oracle 的split函数          v_list := substr(v_list,l_idx+length(p_sep));

oracle 的split函数      else

oracle 的split函数          pipe row(v_list);

oracle 的split函数          exit;

oracle 的split函数      end if;

oracle 的split函数   end loop;

oracle 的split函数   return;

oracle 的split函数end split;

测试:

 

oracle 的split函数

oracle 的split函数SQL> select * from table(split('northsnow,塞北的雪',','));

oracle 的split函数

oracle 的split函数COLUMN_VALUE

oracle 的split函数--------------------------------------------------

oracle 的split函数northsnow

oracle 的split函数塞北的雪

oracle 的split函数

oracle 的split函数SQL> 


补充: 
-----PIPELINED关键字是什么意思? 
---- pipe row是什么意思?

pipelined声名此function是pipe的,如果这么声名了,就必须使用pipe row的方式把数据返回,常规函数最后的"return 变量",就变成了"return". 

pipelined的function主要是为了提高效率,不用等所有的数据都处理完成了才返回客户端,它是边处理边返回.适用于大数据量的交互. 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.