`

ORACLE管道化表函数应用

阅读更多

1).创建包头

create or replace PACKAGE my_package is
  type res_str is table of varchar2(100);

  function splitStr(p_str in varchar2, p_split in varchar2)
    return res_str
    pipelined;
end my_package;

2).创建包体

create or replace package body my_package is

  function splitStr(p_str in varchar2, p_split in varchar2)
    return res_str
    pipelined as
    v_len number := length(p_str);
    v_start  number := 1;
    v_index  number;
  begin
    while (v_start <= v_len) loop
      v_index := instr(p_str, p_split, v_start);
    
      if v_index = 0 then
        pipe row(substr(p_str, v_start));
        v_start := v_len + 1;
      else
        pipe row(substr(p_str, v_start, v_index - v_start));
        v_start := v_index + 1;
      end if;
    end loop;
    return;
  end splitStr;
end my_package;

3).测试

select * from table(my_package.splitStr('lisi,zhangshan,wangwu,xiaoxiao,haihai,tuotuo',','));

        运行结果:

  • 大小: 30.4 KB
分享到:
评论

相关推荐

    Oracle中实现Split函数功能

    这个函数使用了 Oracle 的管道化函数(pipelined function)来返回拆分后的结果。函数内部使用了一个循环来拆分字符串,每次循环都会将拆分后的结果返回给调用者。 最后,我们可以使用这个函数来拆分字符串。例如,...

    Oracle 中 table 函数的应用浅析

    应用表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表。 1. 用游标传递数据 利用游标 REF CURSOR 可将数据集(多行记录)传递到PL/SQL函数: SELECT * FROM TABLE (myfunction (CURSOR (SELECT * ...

    在Oracle的函数中,返回表类型的语句

    - 管道化表函数必须使用`pipe row`语句将对象插入结果流,并且通常以空的`return`语句结束。 - 对于非管道化的函数,可以在函数内部扩展数组并填充数据,最后返回数组实例。 4. **优势和应用场景**: 返回表类型...

    Oracle内置包的使用方法.rar

    本文将详细介绍Oracle内置包的使用方法,包括它们的功能、调用方式以及示例应用。 1. **DBMS_UTILITY**: 这个包主要用于数据库的实用功能,如格式化SQL语句(UTL_FMT),获取数据库版本信息,以及执行PL/SQL块等。...

    oracle spatial 用户指南

    6. **Network Data Model (NDM)**: Oracle Spatial的NDM用于处理网络数据,如道路、管道或电力线路。它支持网络分析,例如找出最短路径、服务区域分析等。 7. **Topology**: Oracle Spatial支持拓扑规则,确保空间...

    Oracle 20071025_PLSQLTuning.pdf

    表函数和管道化表函数可以用于返回集合。这两种类型的函数在处理大量数据时非常有效,尤其是当结果集很大时。 ### 二、系统配置 除了编码实践之外,合理的系统配置也是提高 PL/SQL 性能的关键。例如,调整 Oracle ...

    用Pipelined Table实现split函数的示例

    Oracle提供了一种特殊类型——Pipelined Table Function(管道表函数),它可以用于解决这类问题。本文档将详细介绍如何使用Pipelined Table Function来实现一个split函数,该函数可以将输入字符串根据给定的分隔符...

    剑破冰山 Oracle开发艺术

    读者还能学到管道函数的学习与实战应用,以及如何巧妙地使用锁特性来避免程序的重复启动。 本书的作者团队由具有多年Oracle开发和管理实战经验的专家组成,他们分享了个人的经验和教训,并提供了分析和解决问题的...

    ORACLE 10 g spatial的使用方法简介

    4. Geocoding:对于非结构化的地址数据,Oracle 10g Spatial提供了地理编码功能,可以将这些地址转换为精确的经纬度坐标。 5. 索引改进:R树索引被广泛采用,取代了旧的四叉树索引,提升了空间查询的效率。 6. 新...

    Oracle - In Database Map-Reduce

    传统的Map-Reduce框架通常运行在独立的计算集群上,而Oracle数据库通过其独特的特性——**Pipeline Table Functions**(管道表函数)——提供了一种直接在数据库内部实现Map-Reduce的方式,从而实现了真正的“in-...

    剑破冰山 Oracle开发艺术.part2.rar

    此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免...

    Oracle_Database10g_性能调整与优化-第10章_使用PLSQL提高性能

    使用管道表函数来建立复杂的结果集 管道表函数允许在 PL/SQL 中创建和返回复杂的结果集,这对于处理大量数据和复杂的业务逻辑特别有用。 #### 28. 使用条件编译限制调试命令 条件编译是一种在编译时根据不同的...

    Oracle内置包_reference

    DBMS_UTILITY包提供了一系列实用函数,如分析SQL语句(ANALYZE_STATEMENT)、格式化输出PL/SQL块(FORMAT_SOURCE)以及获取数据库版本信息(GET_VERSION)。这个包对于调试和优化PL/SQL代码非常有用。 二、DBMS_...

    剑破冰山 Oracle开发艺术.part1.rar(共3part)

    此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免...

    剑破冰山 Oracle开发艺术.part3.rar (共3part)

    此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免...

    创建Oracle函数的示例

    在本文中,我们将深入探讨如何使用PL/SQL创建Oracle函数,并介绍一些高级技术,如管道操作。 首先,创建Oracle函数的基本结构包括函数名、输入参数(如果有的话)、返回类型和函数体。以下是一个简单的示例: ```...

    在Oracle运行操作系统命令

    `DBMS_PIPE`包提供了在Oracle进程中创建和管理管道的能力,允许两个或多个Oracle进程之间进行数据交换。这种机制类似于操作系统中的管道功能,但它是在Oracle环境下实现的,并具有不同的内部处理方式。 #### 实现...

    如何在Oracle8.1.6 Spatial 上编程

    在Oracle Spatial中,你可以存储、查询、分析和可视化地理信息。以下是对Oracle8.1.6 Spatial编程的一些关键知识点: 1. **Spatial 数据类型**:Oracle Spatial引入了几何数据类型,如SDO_GEOMETRY,用于存储点、线...

    oracle 学习包含SQL.TERADATA,UNIX

    SQL(结构化查询语言)是操作和查询数据库的标准语言,无论是Oracle还是其他数据库系统,掌握SQL都是必要的。Teradata则是一款大规模并行处理数据库,尤其适用于大数据处理和分析。而Unix操作系统以其稳定性和强大的...

Global site tag (gtag.js) - Google Analytics