实现 字符串分割, 算法 如下:

算法 1:

DECLARE
remove_column myvarray_list;
x varchar(1000);
sub varchar(1000);
i NUMBER;
j NUMBER;
c NUMBER;
rcount NUMBER;
BEGIN
remove_column := myvarray_list(); --init array. sub:='ORA-26786: 键为 ("AAC001") = (11370911196606055225) 的行存在, 但具有冲突列 "AAC003", "AAE011", "AAE036", "AAE476" (在表 BI3.AC01 中)ORA-01403: 未找到任何数据';
--sub:='ORA-26786: A row with key ("C1", "C2") = (TEST1, TEST1) exists but has conflicting column(s) "C4" in table SK.T1 ORA-01403: no data found';
i:= INSTR(sub,'=',1, 1);
sub := SUBSTR(sub, i);
i:= INSTR(sub,' "',1, 1);
sub := SUBSTR(sub, i);
i := INSTR(sub,'"',-1, 1);
sub := SUBSTR(sub, 1,i);
sub:=REPLACE(sub,'"','');
sub:=REPLACE(sub,' ','');
--DBMS_OUTPUT.PUT_LINE(sub);
------------------------------------------------------------
j:=1;
rcount :=1;
WHILE INSTR(sub,',',1, j) !=0 LOOP
i := INSTR(sub,',',1, j);
IF j = 1 THEN
c :=1;
ELSE
c :=1+ INSTR(sub,',',1, j-1);
END IF;
x := SUBSTR(sub,c,i-c);
j:=j+1;
--DBMS_OUTPUT.PUT_LINE(x);
remove_column.extend;
remove_column(rcount) := x;
rcount :=rcount+1; END LOOP;
IF j > 1 THEN
i := INSTR(sub,',',1, j-1);
x := SUBSTR(sub,i+1);
--DBMS_OUTPUT.PUT_LINE(x);
ELSE
x := sub;
--DBMS_OUTPUT.PUT_LINE(x);
END IF;
remove_column.extend;
remove_column(rcount) := x; FOR x in 1..remove_column.count loop
dbms_output.put_line(remove_column(x));
END loop;
END;

算法 2:

DECLARE
str_split myvarray_list;
p_str varchar(1000);
j INT := 0;
i INT := 1;
lens INT := 0;
lenp INT := 0;
p_delimiter VARCHAR(1) := ',';
str VARCHAR2 (1000);
BEGIN
str_split := myvarray_list(); --init array. p_str:='ORA-26786: 键为 ("AAC001") = (11370911196606055225) 的行存在, 但具有冲突列 "AAC003", "AAE011", "AAE036", "AAE476" (在表 BI3.AC01 中)ORA-01403: 未找到任何数据';
--p_str:='ORA-26786: A row with key ("C1", "C2") = (TEST1, TEST1) exists but has conflicting column(s) "C4", "C3" in table SK.T1 ORA-01403: no data found';
i:= INSTR(p_str,'=',1, 1);
p_str := SUBSTR(p_str, i);
i:= INSTR(p_str,' "',1, 1);
p_str := SUBSTR(p_str, i);
i := INSTR(p_str,'"',-1, 1);
p_str := SUBSTR(p_str, 1,i);
p_str:=REPLACE(p_str,'"','');
p_str:=REPLACE(p_str,' ','');
------------------------------------------------------------
lens := LENGTH (p_str);
lenp := LENGTH (p_delimiter);
dbms_output.put_line(lens);
i := 1;
j :=0; WHILE j < lens LOOP
j := INSTR (p_str, p_delimiter, i);
IF j = 0 THEN
j := lens;
str := SUBSTR (p_str, i);
str_split.EXTEND;
str_split (str_split.COUNT) := str;
IF i >= lens
THEN
EXIT;
END IF;
ELSE
str := SUBSTR (p_str, i, j - i);
i := j + lenp;
str_split.EXTEND;
str_split (str_split.COUNT) := str;
END IF;
END LOOP; FOR x in 1..str_split.count loop
dbms_output.put_line(str_split(x));
END loop;
END;

Oracle 存储过程 split 代码实现的更多相关文章

  1. C#调用Oracle存储过程

    C#调用Oracle存储过程的代码如下所示: using System; using System.Collections.Generic; using System.Collections.Obje ...

  2. java代码调用oracle存储过程

    一.简介 与调用mysql存储过程类型过程都是如下 1.创建连接 Connection conn = DriverManager.getConnection(url, user, password); ...

  3. oracle存储过程结合我公司代码1

    1.           Framework.QueryInfo info1 = new Framework.QueryInfo();            //string Sql = Holwor ...

  4. oracle 存储过程

    来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...

  5. Oracle存储过程语法

    原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程  1 CREATE OR REPLACE PROCEDURE 存储过程名  ...

  6. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  7. Oracle存储过程基本语法介绍

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  8. MyBatis调用Oracle存储过程

    MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...

  9. Oracle存储过程(转)

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

随机推荐

  1. LVM逻辑卷基本概念及LVM的工作原理

    这篇随笔将详细讲解Linux磁盘管理机制中的LVM逻辑卷的基本概念以及LVM的工作原理!!! 一.传统的磁盘管理 其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是 ...

  2. Magento代码之订单创建流程

    Magento代码之订单创建流程         直接看代码吧.下面的代码是如何通过程序创建一个完美订单.        <?php        require_once 'app/Mage. ...

  3. @html.ActionLink的几种参数格式

    一 Html.ActionLink("linkText","actionName") 该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法, ...

  4. Day25_多线程第二天

    1.单例); } 4.线程之间的通信(多个线程共享同一数据的问题) ; public void print1() throws InterruptedException { synchronized( ...

  5. Hibernate save, saveOrUpdate, persist, merge, update 区别

    Hibernate Save hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原 ...

  6. centos 安装beanstalkd

    You need to have the EPEL repo (http://www.servermom.org/2-cents-tip-how-to-enable-epel-repo-on-cent ...

  7. Swiper 中文API手册(share)

    本文分享自 http://www.cnblogs.com/scavengers/p/3760449.html ---------------------------华丽的分割线------------ ...

  8. setTimeout的应用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 关于CSS初步入门简述1

    关于CSS的简介可以自行百度,本篇只考虑内容 首先关于CSS会由浅入深,写在前面的有很多不严谨,只是为了引出后文所写.不过如果谬误较大,敬请指正! 1.大部分的代码要写在之中 简单的例子: <b ...

  10. Install Debian note

    environment: already install xp,win7 and win8PE, left 87G space to install Debian, this space not fo ...