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

算法 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. GCD: 基本概念和Dispatch Queue 【转】

    什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像 NSOperationQueue,他们都允 ...

  2. oracle实现split函数功能

    转载: http://blog.csdn.net/jojo52013145/article/details/6758279在实际的应用中,为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 R ...

  3. ReportViewer改变图表类型

    /// <summary>    /// 切换成柱状图    /// </summary>    /// <param name="sender"&g ...

  4. redis 原子增一的妙用

    有这样一个需求,插入数据库之前需要了解数据库ID号,考虑到不同的主机怎么去协同这个ID呢 同时要保证每个主机分到不同的ID号,这个比较麻烦,如果独立开一个服务来一个C/S操作比较麻烦,幸好REDIS提 ...

  5. 提升Nginx+PHP-FPM性能技巧

    /etc/php-fpm.d 2.1进程数   php-fpm初始/空闲/最大worker进程数      pm.max_children = 300      pm.start_servers = ...

  6. JS中this的值到底为何?

    之前很久的时间,因为研究不深,对于this的值一直模模糊糊,不是很清楚,最近有空做了一些研究,终于彻底弄明白了this到底为何物. 首先, 先抛出一个定论:”在Javascript中,this关键字永 ...

  7. Android应用开发是否应避免使用枚举?

    在Android Froyo版本之前, 官方文档Performance Tips中有"Avoid Enums Where You Only Need Ints", 后来该部分被去掉 ...

  8. 评价qq拼音输入法

    我目前正在使用qq拼音输入法,从人机交互设计方面,我对qq输入法从用户界面.记住用户选择.短期刺激和长期使用的好处坏处.不让用户犯简单错误这四个方面进行了评价. 1.从用户界面方面: qq输入法用户界 ...

  9. SolidWorks的简单介绍及基本用法

    写这博客的动机来源于构建之法微信群里面的的一位老师.sw是一个强大的机械设计制图软件,我记得大一的时候学制图学的3d软件是inventor,而后发现sw用起来更方便更高效,于是就自学了sw,由于是自学 ...

  10. 【Cocos2d-x 3.x】 调度器Scheduler类源码分析

    非个人的全部理解,部分摘自cocos官网教程,感谢cocos官网. 在<CCScheduler.h>头文件中,定义了关于调度器的五个类:Timer,TimerTargetSelector, ...