详解oracle管道函数的用法(一行拆为多行)

 更新时间:2019年08月29日 15:16:01   作者:虎咆狼哮  
这篇文章主要介绍了oracle管道函数的用法(一行拆为多行),非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合

如果需要在客户端实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline function)。

关键字PIPELINED表明这是一个oracle管道函数,oracle管道函数的返回值类型必须为集合

--创建一个集合接受返回的值
1st.create or replace type type_split as table of varchar2(4000);
--创建管道函数
create or replace function split(p_string varchar2, p_sep varchar2 := ',') return type_split pipelined
--dbms_output输出的信息,需要在服务器执行完整个函数后一次性的返回给客户端
--pipelined 表明这是一个管道函数,oracle管道函数的返回值类型必须为集合
--PIPE ROW语句被用来返回该集合的单个元素
as
v_string varchar2(4000) := p_string;
idx Number;
begin
loop
--idx为第一个,所在的位置
idx := instr(v_string, p_sep);
if idx > 0 then
--,前面的数据加入Row/,后面的数据为下个循环使用的字符串
pipe row(substr(v_string, 1, idx - 1));
v_string := substr(v_string, idx + length(p_sep));
else
exit;
end if;
end loop;
--执行完后需return
return ;
end;
test:
select a.cust_po,b.column_value proqepi from 
(
  select cust_po,proqepi
  from cux_custpo_info_t
  where cust_po='PX90806001-4'
) a,(table(split(a.proqepi,','))) b

测试成功。

总结

以上所述是小编给大家介绍的oracle管道函数的用法(一行拆为多行),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • 部署Oracle 12c企业版数据库( 安装及使用)

    部署Oracle 12c企业版数据库( 安装及使用)

    这篇文章主要介绍了部署Oracle 12c企业版数据库( 安装及使用),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Oracle的四道经典面试题分享

    Oracle的四道经典面试题分享

    这篇文章主要给大家介绍了关于Oracle的四道经典面试题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Oracle具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • oracle跨库查询dblink的用法实例详解

    oracle跨库查询dblink的用法实例详解

    这篇文章主要介绍了oracle跨库查询dblink的用法,结合实例形式较为详细的分析了Oracle中跨库查询dblink的创建、使用及删除等相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-12-12
  • oracle设置mybatis自动生成id插入方式

    oracle设置mybatis自动生成id插入方式

    这篇文章主要介绍了oracle设置mybatis自动生成id插入方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Oracle表空间不足的两种解决办法

    Oracle表空间不足的两种解决办法

    这篇文章主要介绍了Oracle表空间不足的两种解决办法,需要的朋友可以参考下
    2017-10-10
  • Oracle数据库升级或数据迁移方法研究

    Oracle数据库升级或数据迁移方法研究

    本文详细论述了oracle数据库升级的升级前的准备、升级过程和升级后的测试与调整工作,并对各种升级方法在多种操作系统平台上作了测试。
    2016-07-07
  • oracle中左填充(lpad)和右填充(rpad)的介绍与用法

    oracle中左填充(lpad)和右填充(rpad)的介绍与用法

    这篇文章主要跟大家介绍了关于oracle中左填充(lpad)和右填充(rpad)的相关资料,通过填充我们可以固定字段的长度,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-08-08
  • Oracle事务(transaction)详解

    Oracle事务(transaction)详解

    本文详细讲解了Oracle中的事务(transaction),文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • Oracle 11g 安装配置图文教程

    Oracle 11g 安装配置图文教程

    这篇文章主要为大家详细介绍了Oracle 11g 安装配置图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Oracle START WITH 递归语句的使用方法

    Oracle START WITH 递归语句的使用方法

    Oracle数据库中的START WITH语句经常与CONNECT BY子句一起使用,以实现对层次型数据的查询,本文主要介绍了Oracle START WITH 递归语句的使用方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02

最新评论