首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

巧用SQL:oracle plsql split函数

李伟 专注于oracle pl/sql开发和Java开发,擅长复杂业务逻辑、算法的pl/sql实现。 背景 在软件开发过程中程序员经常会遇到字符串的拼接和拆分工作。...把问题交给pl/sql程序员怎么样呢? pl/sql程序员好像也没有更好的方法,单句sql不好实现,为每个这个的功能分别写存储过程代价也很大。...解决方案 本文要做的就是单句SQL实现该功能。 先分析一下,该业务有两个关键点。 一是字符串拼接,oracle(11.2)提供了listagg函数已经实现了该功能,我们直接使用就可以。...函数联合使用,需要构建两张表。...listagg函数联合查询: ? 注意:listagg是oracle 11.2版本的新功能。 至此,便简单实现了oracle的字符拆分拼接。

2.1K60
您找到你想要的搜索结果了吗?
是的
没有找到

Oracle使用总结之异常篇

/SQL使用 SQLCODE, SQLERRM异常处理函数 即使是写得最好的PL/SQL程序也会遇到错误或未预料到的事件。...当然了,PL/SQL编译错误不能通过PL/SQL异常处理来处理,因为这些错误发生在PL/SQL程序执行之前。...1.4 在 PL/SQL使用 SQLCODE,SQLERRM异常处理函数 由于ORACLE 的错信息最大长度是512字节,为了得到完整的错误提示信息,我们可用 SQLERRM和 SUBSTR 函数一起得到错误提示信息...,可读性差,使用异常,可以方便处理错误,而且异常处理程序正常的事务逻辑分开,提高了可读性,   BEGIN   SELECT ...   .../SQL块的ORACLE错误或由PL/SQL代码的某操作引起的错误,除数为零或内存溢出的情况。

2K60

PLSQ编程

-1---ORA-00001: 违反唯一约束条件 (SCOTT.PK_EMP) 游标PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现 为了处理 SQL 语句,ORACLE 必须分配一片叫上下文...PL/SQL 程序不能用OPEN 语句重复打开一个游标。 提取游标数据 就是检索结果集合中的数据行,放入指定的输出变量中。...使用for循环来提取游标数据 PL/SQL语言提供了游标FOR循环语句,自动执行游标的OPEN、FETCH、CLOSE语句和循环语句的功能;当进入循环时,游标FOR循环语句自动打开游标,并提取第一行游标数据...而对于非查询语句,修改、删除操作,则由ORACLE 系统自动地为这些操作设置游标并创建其工作区, 这些由系统隐含创建的游标称为隐式游标,隐式游标的名字为SQL 隐式游标属性 SQL%FOUND 布尔型属性...,当最近一次读记录时成功返回,则值为true; SQL%NOTFOUND 布尔型属性,%found相反; SQL %ROWCOUNT 数字型属性, 返回已从游标中读取得记录数; SQL %ISOPEN

1.5K10

进阶数据库系列(十一):PostgreSQL 存储过程

PL/pgSQL 存储过程,它和 Oracle PL/SQL 非常类似,是 PostgreSQL默认支持的存储过程,下面针对优缺点给大家做了简要分析。 优点 减少应用和数据库之间的网络传输。...存储过程和函数的功能可以被多个应用同时使用。 作为脚本使用产品的 liquibase 中, 清理或修复数据将非常好用。 缺点 导致软件开发缓慢。...还有,OUT和INOUT参数不能和RETURNS TABLE符号一起使用。...PL/pgSQL 游标允许我们封装一个查询,然后每次处理结果集中的一条记录。...游标PL/pgSQL 中的一个强大的数据处理功能,更多的使用方法可以参考官方文档:https://www.postgresql.org/docs/current/plpgsql-cursors.html

1.7K20

PLSQL --> 语言基础

使得该语言不仅具有过程编程语 言的特征,循环、条件分支等。同时也具有对象编程语言的特征,重载、继承等。.../SQL的语言优点 支持SQL 高生成率,性能好 可移植性 Oracle集成 二、PL/SQL的语法要素 PL/SQL语法要素包括字符集、标识符、文本、分隔符、注释等。...通常包括游标变量(REF CURSOR)和对象类型变量(REF obj_type) 4.LOB变量 存储大批量数据的变量,通常分为内部LOB以及外部LOB 5.使用SQL*Plus变量 必须首先使用...--> 游标 PL/SQL -->隐式游标(SQL%FOUND) PL/SQL --> 异常处理(Exception) PL/SQL --> PL/SQL记录 PL/SQL --> 包的创建管理 PL.../SQL --> 包重载、初始化 PL/SQL --> DBMS_DDL包的使用 PL/SQL --> DML 触发器 PL/SQL --> INSTEAD OF 触发器

85830

PLSQL --> 包的创建管理

PL/SQL类型包括table类型,record类型。PL/SQL项则包括游标游标 变量。PL/SQL子程序包括过程,函数等。可以说包可谓是包罗万象。是所有PL/SQL相关资源的汇总。...包的使用可以简化应用程序设计,实现信息掩藏,子程序重载等功能。 包的优点 1.模块化:将函数,子程序全部融合在一起,使得成为一个有机的整体,封装了相关的结构。...一、包的组成创建语法 包头:用于定义包的公共组件,函数头,过程头,游标等以及常量,变量等。包头中定义的公共组件可以在包内引用,也可以被其 它子程序引用。...--> 游标 PL/SQL -->隐式游标(SQL%FOUND) PL/SQL --> 异常处理(Exception) PL/SQL --> PL/SQL记录 PL/SQL --> 包的创建管理 PL.../SQL --> 包重载、初始化 PL/SQL --> DBMS_DDL包的使用 PL/SQL --> DML 触发器 PL/SQL --> INSTEAD OF 触发器

79320

PLSQL 游标变量

游标变量游标相似,有其共性,也有其不同点。就其共性来说两者都是指向多行查询的结果集中的当前行。都要经历声明,打开,检索关闭的过程。所不同的是游标游标变量类似于常量变量。...二、游标变量使用的情形     PL/SQL 存储子程序和各种客户端之间可以使用游标变量来传递查询结果,这是游标变量最主要的作用。...例如,我们把主游标变量传递到嵌套在Pro*C 程序中的PL/SQL 块,游标变量指向的工作区就可以被访问。     如果客户端含有PL/SQL 引擎,那么从客户端调用服务器端就不会有什么约束。...3、当处理游标变量时,不要一起使用FOR UPDATE和OPEN FOR 4、不能使用比较运算符来测试游标变量的等价性、不等价性或者非空性 5、游标变量不能被赋予NULL值 6、REF CURSOR类型不能在...REF CURSOR适合于只依赖于SQL语句中(不是PL/SQL语句中)变   量的查询 8、不能在联合数组、嵌套表、或者变长数组中存储游标变量 9、如果向PL/SQL传递主机游标变量,不能在服务器检索它

1.3K40

PLSQL -->隐式游标(SQL%FOUND)

--=============================== -- PL/SQL -->隐式游标(SQL%FOUND) --=============================== 在PL.../SQL中,游标使用分为两种,一种是显示游标,一种是隐式游标,显示游标使用需要事先使用declare来进行声明,其过程包括 声明游标,打开游标,从游标提取数据,关闭游标。...有关显示游标使用,请参考:PL/SQL --> 游标 一、隐式游标的定义及其属性 定义 隐式游标则由则由系统自动定义,非显示定义游标的DML语句即被赋予隐式游标属性。...code is executed successful PL/SQL procedure successfully completed 2.SQL游标的综合应用(根据SQL游标的不同属性返回不同的结果...请参考 SQL 基础--> 子查询 SQL 基础-->多表查询 SQL基础-->分组分组函数 SQL 基础-->常用函数 SQL 基础--> ROLLUPCUBE运算符实现数据汇总 SQL基础-

1.3K30

oracle补充

:网上转帐就是用事务来处理,用以保证数据的一致性。...cursor作为后缀 emp_cursor 当定义异常时,建议用e_作为前缀 e_error 什么是PL/SQL块 块(block)是pl/sql的基本程序单元,编写pl/sql程序实际上就是在编写块,.../SQL函数 函数是命名了的、存储在数据库中的PL/SQL程序块。...2)将指针指向第一条记录 提取游标数据 fetch 游标名 into 变量1,变量2,……; 关闭游标 close 游标名; 游标属性 游标提供一些属性可以帮助编写PL/SQL 程序,游标属性的使用方法为...:游标名[属性],例如:mycursor%isopen %isopen属性:该属性功能是测试游标是否打开,如果没有打开游标使用fetch语句将提示错误 %found属性:该属性功能是测试前一个fetch

3.1K30

【DB笔试面试445】Oracle中的异常可以分为哪几类?

使用WHEN … THEN来处理系统定义的异常。使用WHEN OTHERS THEN处理未定义的异常。 (3)当异常处理结束后,Oracle就将处理权交给调用者。结束PL/SQL块的运行。...它们全部放在PL/SQL自带的标准包中,这样程序员就无需再次定义了。...STORAGE_ERROR 内存不够或内存被破坏触发的内部错误 ORA-06502 VALUE_ERROR 赋值操作,变量长度不足,触发该异常 ORA-06504 ROWTYPE_MISMATCH 宿主游标变量...使用预定义异常只能处理系统预定义的20多个Oracle错误,而当使用PL/SQL开发应用程序时,可能会遇到其它的一些Oracle错误。例如,在PL/SQL块中执行DML语句时,违反了约束规定等等。...对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其触发。

1.7K10

Oracle-PLSQL基础

概述 PL/SQL简介 pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展,pl/sql不仅允许嵌入Sql语言,还可以定义变量和常量,允许使用条件语句和循环语句...没有e 且是连在一起的 if 条件 then 语句; elsif 条件 then 语句; else 语句; end if; ---- 栗子 /* 判断用户从键盘输入的数字 1、如何使用if语句 2、接收一个键盘输入...对于隐式游标的操作,定义、打开、取值及关闭操作,都由ORACLE 系统自动地完成,无需用户进行处理。用户只能通过隐式游标的相关属性,来完成相应的操作。...格式调用为: SQL% 隐式游标可以使用名字SQL来访问,但要注意,通过SQL游标名总是只能访问前一个DML操作或单行SELECT操作的游标属性。...、删除、更新或单行查询操作成功 SQL%NOTFOUND 布尔型 SQL%FOUND属性返回值相反 SQL%ISOPEN 布尔型 DML执行过程中为真,结束后为假 DECLARE

1.7K20

绑定变量及其优缺点

本文讲述了绑定变量的使用方法,以及绑定变量的优缺点、使用场合。 一、绑定变量     提到绑定变量,就不得不了解硬解析软解析。...而软解析呢,则是由于在library cache已经存在SQL语句一致的SQL语句文本 、运行环境,即有相同的父游标游标,采用拿来主义,直接执行即可。...有关更多的硬解析软解析以及父游标,子游标请作如下参考:     有关硬解析软解析,请参考:Oracle 硬解析软解析     有关父游标、子游标,请参考:父游标、子游标与共享游标    ...    优点:         可以在library cache中共享游标,避免硬解析以及之相关的额外开销         在大批量数据操作时将呈数量级来减少闩锁的使用,避免闩锁的竞争    ...注意:         对于实际的数据库对象,(表,视图,列等),不能使用绑定变量替换,只能替换字面量。

1.4K20

PLSQL --> 包重载、初始化

有关包的创建管理请参考:PL/SQL --> 包的创建管理 一、使用重载特性建立包头 在包中,具有重载特性的子程序必须使用不同的输入参数。同名函数返回值数据类型必须完全相同。...请参考 SQL 基础--> 子查询 SQL 基础-->多表查询 SQL基础-->分组分组函数 SQL 基础-->常用函数 SQL 基础--> ROLLUPCUBE运算符实现数据汇总 SQL基础-...CONNECT BY PRIOR) 有关PL/SQL请参考 PL/SQL --> 语言基础 PL/SQL --> 流程控制 PL/SQL --> 存储过程 PL/SQL --> 函数 PL/SQL...--> 游标 PL/SQL -->隐式游标(SQL%FOUND) PL/SQL --> 异常处理(Exception) PL/SQL --> PL/SQL记录 PL/SQL --> 包的创建管理 PL.../SQL --> 包重载、初始化 PL/SQL --> DBMS_DDL包的使用 PL/SQL --> DML 触发器 PL/SQL --> INSTEAD OF 触发器

63620

PLSQL --> 动态SQL

--==================== -- PL/SQL --> 动态SQL --==================== 使用动态SQL是在编写PL/SQL过程时经常使用的方法之一。...c.对于多行结果集的查询,需要使用游标变量或批量动态SQL,或者使用临时表来实现。 d.当执行SQL时,其尾部不需要使用分号,当执行PL/SQL 代码时,其尾部需要使用分号。...使用的常见错误,请参考:PL/SQL --> 动态SQL的常见错误 六、更多参考 有关SQL请参考 SQL 基础--> 子查询 SQL 基础-->多表查询 SQL基础-->分组分组函数 SQL...--> 游标 PL/SQL -->隐式游标(SQL%FOUND) PL/SQL --> 异常处理(Exception) PL/SQL --> PL/SQL记录 PL/SQL --> 包的创建管理 PL.../SQL --> 包重载、初始化 PL/SQL --> DBMS_DDL包的使用 PL/SQL --> DML 触发器 PL/SQL --> INSTEAD OF 触发器

2.2K10

Oracle PLSQL编程之变量

注: 以下测试案例所用的表均来自scott方案,使用前,请确保该用户解锁. 1、简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a、标量类型(Scalar...ok,使用复合类型-pl/sql记录成功的输出了员工名和工资 3.2、复合类型-pl/sql表 这种类型相当于高级语言的数组,但需要注意的是高级语言中的数组下标不能为负数,而pl/sql可以是可以为负数...所以当我们使用pl/sql表类型时,需要注意下标的对应 ii、当查询返回的结果集是多个,但是又指定pl/sql表类型的下标,相当于pl/sql表类型只接受一个值,这个时候会报错,具体代码如下: declare...在编写pl/sql程序时,可以使用游标变量(ref cursor)和对象类型变量 (ref obj_type)两种参照变量类型。...sp_emp_cursor游标类型的游标变量 test_cursor sp_emp_cursor; 然后打开游标,将游标结果集结合 open test_cursor for select ename,

92970
领券