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

算法 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. asp.net页面事件执行顺序

    转自http://www.cnblogs.com/hnlyh/articles/4230388.html C#代码 using System; using System.Data; using Sys ...

  2. aspx前台调用cs后台方法

    随着对于mvc的习惯使用,aspx页面渐渐用的不怎么用了,主要是生命周期感觉上比较慢,要么就用html+handler一般处理程序来装下逼.虽然不用,但还是要给刚工作的人讲下,相信不少人都想过:既然前 ...

  3. Ruby学习笔记0708

    #!/usr/bin/env ruby class MegaGreeter attr_accessor :names # 初始化這個物件 def initialize(names = "Wo ...

  4. 安装.cer证书并将证书从.cer格式转化为.pem格式

    ## 安装.cer证书并将证书从.cer格式转化为.pem格式 ### 安装.cer证书到本地 打开*运行*窗口 输入MMC.exe, 单击*确定* 在打开的控制台1的窗口中. 选择*文件*, 选择* ...

  5. ionic 跨页面传值的几种方法

    1.使用AngularJS自带的$cacheFactory服务 $cacheFactory 从字面直译即为缓存工厂,可以用它来生成缓存对象,缓存对象以key-value的方式进行数据的存储,在整个应用 ...

  6. HttpClient方式模拟http请求设置头

    关于HttpClient方式模拟http请求,请求头以及其他参数的设置. 本文就暂时不给栗子了,当作简版参考手册吧. 发送请求是设置请求头:header HttpClient httpClient = ...

  7. 记账类APP竞品分析-挖财与随手记

    注:本文更新中. 一.概览 1.  产品名称及版本 l  挖财11.2.0.0 免费版(2016/9/6发布) l  随手记10.2.8免费版(2016/8/22发布) 2.  设备信息 设备型号:i ...

  8. Linux下select&poll&epoll的实现原理(一)

    最近简单看了一把 linux-3.10.25 kernel中select/poll/epoll这个几个IO事件检测API的实现.此处做一些记录.其基本的原理是相同的,流程如下 先依次调用fd对应的st ...

  9. MySQL数据库之------DOS命令行的基本操作

    1.   进入D盘的如下路径: 按住   ctrl+shift  ,右键,选择在此处打开命令行窗口.出现图2.   图   1  图 2 2. .     3.   图 3  4.    图 4   ...

  10. vs增加第三方依赖库的方法总结

    转自http://blog.csdn.net/raodotcong/article/details/8998379 先说说普通的两种方法: 方法1:  通过设置工程配置来添加lib库. 转自网上: A ...