--声明的长度要长点 create or replace type type_split as table of varchar2(250); --创建函数 create or replace function split ( p_list varchar2, p_sep varchar2 := ',' ) return type_split pipelined is l_idx pls_integer; v_tmp varchar2(250):=null; v_list varchar2(250) := p_list; begin loop l_idx := instr(v_list,p_sep); --dbms_output.put_line ('v_list:'||v_list); --dbms_output.put_line ('l_idx:'||l_idx); if l_idx > 0 then v_tmp:=substr(v_list,1,l_idx-1); --dbms_output.put_line ('v_tmp:'||v_tmp); if (v_tmp is not null and length(v_tmp)>0 ) then pipe row(v_tmp); end if; v_list := substr(v_list,l_idx+length(p_sep)); else --dbms_output.put_line ('v_list:'||v_list); if (v_list is not null and length(v_list)>0 ) then pipe row(v_list); end if; exit; end if; end loop; return; end split;
测试:
select * from table(split(',northsnow,塞北的雪,',','));
COLUMN_VALUE -------------------------------------------------- northsnow 塞北的雪
补充:
-----PIPELINED关键字是什么意思?
---- pipe row是什么意思?
pipelined声名此function是pipe的,如果这么声名了,就必须使用pipe row的方式把数据返回,常规函数最后的"return 变量",就变成了"return".
pipelined的function主要是为了提高效率,不用等所有的数据都处理完成了才返回客户端,它是边处理边返回.适用于大数据量的交互.
相关推荐
本文档详细介绍了如何在Oracle数据库中实现像C#等其它编程语言中Split函数来拆分字符的功能。例子简单易懂,并附有详细的实现过程。
oracle split函数,内有两种实现方式,可直接返回多行记录如: 传入参数: SELECT * FROM TABLE(mm_split('中国,be,c,de',',')); 返回四条记录: 中国 be c de
最近在oracle 中用到拆分字符串返回数组,一直头痛,因为在 oracle 中没有类似java中有split 函数 ,所以要自己写。好不容搜到一个。那网上是到处都是这个代码。怎么找都是这个方法,我就用了。这个方法如下: ...
Oracle没有提供split函数,但可以自己建立一个函数实现此功能。比如“abc defg hijkl nmopqr stuvw xyz”,分隔符是空格,但空格个数不定。 源代码: CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR...
实现oracle中 分割字符串的功能,返回一个表。 比如:abc;cde;dfd;133 select * from table(split('abc;cde;dfd;133')) 可以返回 abc cde dfd 133
用Pipelined Table实现split函数的示例
Oracle,类似.Net中的Split函数 Oracle,类似.Net中的Split函数
Oracle 自定义函数需求有个字段,工号JOB_NUMBER ='10202804/10133066/10131810',数据库里是编号,所有想写个函数,将JOB_NUMBER 传递进去,然后返回 '张三/李四/王五',如果王五不存在则返回昵称拼接code '张三/...
oracle自定义函数,字符串分解,可按分隔符分解字符串,分隔符可自己随便定义,非常灵活。欢迎下载。
oracle中没有方便分割字符串的的函数,仿照c#中的split方法和网友的方法,并进行了改进,(1)先自定义个类型str_split,(2)分割函数splitstr,返回table;(3)取第n个数组的get_splitstr,用户1,2,3部建好,使用时只需要...
Oracle拆分字符串,字符串分割的函数,将返回一个表格,如果有需要的可以下载去看看。
最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理
Erp/Ehr/Crm/Clm系统的开发者很多时候会用到姓名拆分为汉语拼音的代码。 这个函数可以帮你实现以下内容。...select fn_getpy( F_namesplit('张三',1),2) as 姓,fn_getpy( F_namesplit('张三',2),2) as 名 from dual
oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合 如果需要在客户端实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline function)。 关键字PIPELINED表明这是一个...
。。。
。。。
首先是写一个分割字符串的函数,返回table类型 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN ty_str_split IS j INT := 0; i INT := 1; len INT := 0; len1 INT...
select text from all_source where owner=user and name='SF_SPLIT_STRING' 查看表字段 select cname from col where tname='ZW_YINGYEZ' select column_name from user_tab_columns where table_name='...