Oracle 存储过程 split 代码实现
实现 字符串分割, 算法 如下:
算法 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 代码实现的更多相关文章
- C#调用Oracle存储过程
C#调用Oracle存储过程的代码如下所示: using System; using System.Collections.Generic; using System.Collections.Obje ...
- java代码调用oracle存储过程
一.简介 与调用mysql存储过程类型过程都是如下 1.创建连接 Connection conn = DriverManager.getConnection(url, user, password); ...
- oracle存储过程结合我公司代码1
1. Framework.QueryInfo info1 = new Framework.QueryInfo(); //string Sql = Holwor ...
- oracle 存储过程
来自:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 I ...
- Oracle存储过程语法
原文链接:http://www.jb51.net/article/31805.htm Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 ...
- ORACLE存储过程调用Web Service
1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...
- Oracle存储过程基本语法介绍
Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...
- MyBatis调用Oracle存储过程
MyBatis调用Oracle存储过程 1.无输入和输出参数的存储过程 2.带有输入和输出参数的存储过程 3.返回游标的存储过程 mybatis中的配置文件代码 <resultMap type= ...
- Oracle存储过程(转)
Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...
随机推荐
- asp.net页面事件执行顺序
转自http://www.cnblogs.com/hnlyh/articles/4230388.html C#代码 using System; using System.Data; using Sys ...
- aspx前台调用cs后台方法
随着对于mvc的习惯使用,aspx页面渐渐用的不怎么用了,主要是生命周期感觉上比较慢,要么就用html+handler一般处理程序来装下逼.虽然不用,但还是要给刚工作的人讲下,相信不少人都想过:既然前 ...
- Ruby学习笔记0708
#!/usr/bin/env ruby class MegaGreeter attr_accessor :names # 初始化這個物件 def initialize(names = "Wo ...
- 安装.cer证书并将证书从.cer格式转化为.pem格式
## 安装.cer证书并将证书从.cer格式转化为.pem格式 ### 安装.cer证书到本地 打开*运行*窗口 输入MMC.exe, 单击*确定* 在打开的控制台1的窗口中. 选择*文件*, 选择* ...
- ionic 跨页面传值的几种方法
1.使用AngularJS自带的$cacheFactory服务 $cacheFactory 从字面直译即为缓存工厂,可以用它来生成缓存对象,缓存对象以key-value的方式进行数据的存储,在整个应用 ...
- HttpClient方式模拟http请求设置头
关于HttpClient方式模拟http请求,请求头以及其他参数的设置. 本文就暂时不给栗子了,当作简版参考手册吧. 发送请求是设置请求头:header HttpClient httpClient = ...
- 记账类APP竞品分析-挖财与随手记
注:本文更新中. 一.概览 1. 产品名称及版本 l 挖财11.2.0.0 免费版(2016/9/6发布) l 随手记10.2.8免费版(2016/8/22发布) 2. 设备信息 设备型号:i ...
- Linux下select&poll&epoll的实现原理(一)
最近简单看了一把 linux-3.10.25 kernel中select/poll/epoll这个几个IO事件检测API的实现.此处做一些记录.其基本的原理是相同的,流程如下 先依次调用fd对应的st ...
- MySQL数据库之------DOS命令行的基本操作
1. 进入D盘的如下路径: 按住 ctrl+shift ,右键,选择在此处打开命令行窗口.出现图2. 图 1 图 2 2. . 3. 图 3 4. 图 4 ...
- vs增加第三方依赖库的方法总结
转自http://blog.csdn.net/raodotcong/article/details/8998379 先说说普通的两种方法: 方法1: 通过设置工程配置来添加lib库. 转自网上: A ...