一:前言

今天我自己第二次写游标,我擦,觉得自己在数据库方面需要很大的提高啊。今天遇到三个问题,第一个是oracle数据库中的数据拆分的问题,这个我用regexp_substr来进行解决,第二个问题就是regexp_substr里面的参数,我没有成功的用select语句进行代替(我现在还不知道)。第三个是我写完游标竟然不知道怎么讲获取的值返回。苍天啊,大地啊。

下面进行详细说明;

二:

1、regexp_substr函数

REGEXP_SUBSTR(String, pattern, position, occurrence, modifier):

第一个参数:是需要进行匹配的字符串;

     第二个参数:进行匹配的正则表达式;

第三个参数:起始位置,从第几个字符开始进行正则表达式的匹配。(默认为1)

第四个参数:表示匹配的第几个。默认也为1;

第五个参数:模式(“i”表示不区分大小写进行检索,"c"是区分大小写进行检索。默认的是“c”);

    

然后就是获取到我们自己想要查分后的结果:

上面的拆分就说到这,基本上就是照葫芦画瓢吧。

2、就是我想说的我想把那个第一个参数string用select 语句改写,但是没有改写成功。

select regexp_substr('3W,3X,5,57,58,0','[^,]+',1,level,'i') as str from dual
connect by level <=length('3W,3X,5,57,58,0')
-length(REGEXP_REPLACE('3W,3X,5,57,58,0',',',''))+1;

结果失败了。希望谁要是成功了告诉我下。

3、就是我现在得到了我想要的结果后,我们根据这拆分的数据在进行循环查询得到我们想要的数据,我得到是把循环的数据连载一起以字符串的形式返回。

所以这里我又要用到游标进行循环。

先给出错误的代码,那时我只是先写了游标,自己不知道怎么返create or replace function get_bclb(str in varchar2,v_group_code in varchar2)

create or replace function get_bclb(str in varchar2,v_group_code in varchar2)
return varchar2 is
v_names varchar2(4000);
declare
v_code pf_common_config.code%TYPE;
n varchar2(2000);
CURSOR c_cursor
is select regexp_substr(str,'[^,]+',1,level,'i') as str from dual
connect by level <=length(str)
-length(REGEXP_REPLACE(str,',',''))+1; begin
open c_cursor;
loop
fetch c_cursor into v_code;
exit when c_cursor%NOTFOUND;
select c.name into n from pf_common_config c where c.code = v_code and c.group_code = 'BCLB';
-- DBMS_OUTPUT.PUT_LINE('转换后的数据:'|| v_code||'='||n);
v_names := v_names ||n||',';
end loop;
close c_cursor;
-- DBMS_OUTPUT.PUT_LINE('转换后的数据:'||v_names);
return v_names;
end get_bclb;

最后修改成功的代码是:

create or replace function get_bclb(str in varchar2,v_group_code in varchar2)
return varchar2 is
v_names varchar2(4000);
n varchar2(2000);
v_code varchar2(100);
CURSOR c_cursor is
select regexp_substr(str,'[^,]+',1,level,'i') as str from dual
connect by level <= length(str) - length(REGEXP_REPLACE(str,',',''))+1; begin
open c_cursor;
loop
fetch c_cursor into v_code;
exit when c_cursor%NOTFOUND;
select c.name into n from pf_common_config c where c.code = v_code and c.group_code = v_group_code;
-- DBMS_OUTPUT.PUT_LINE('转换后的数据:'|| v_code||'='||n);
v_names := v_names ||n||',';
end loop;
close c_cursor;
-- DBMS_OUTPUT.PUT_LINE('转换后的数据:'||v_names);
return v_names;
end get_bclb;

几天还有个函数:在计算年龄是用到了,自己就去查了下。Trunc((sysdate-csrq)/365,0) as age,这里就表是取整,如果是Trunc((sysdate-csrq)/365,2) 就表示两位小数。

三:自己现在在实习,每天虽然做的事情不是很多,我现在在做报表,但是我还是觉得自己是码农啊,这不是我想干的,我想学很多我自己不会的知识,而不只是在这天天敲代码。努力加油。学习,最近去学学Android吧。Go!Go!Go!

oracle有关游标的知识的更多相关文章

  1. 设置ORACLE数据库游标大小

    先用超级管理员(sys)登陆服务器: sqlplus "sys/***@orcl as sysdba" 连接到:Oracle 查看ORACLE最大游标数: SQL> show ...

  2. Oracle使用游标为所有用户表添加主键语句

    应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在I ...

  3. Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串

    应用场合:参考网上查询数据表的所有字段名代码,使用游标生成指定单个表的所有字段名跟逗号组成的用于select  逗号隔开的字段名列表 from字符串等场合. 查询结果输出如下: 当前数据表TB_UD_ ...

  4. Oracle使用游标删除所有用户数据表中的所有记录脚本

    应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用 测试结果:经查询已删除所有数据 存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自 ...

  5. Oracle树形结构数据-相关知识总结

    Oracle树形结构数据--基本知识 1.数据组成 2.基本查询 2.1.查询某节点及该节点下的所有子孙节点 SELECT   *      FROM QIANCODE.TREE_TABLE_BASI ...

  6. Oracle最大游标数控制

    /************************************************************************ ********* Oracle最大游标数控制 ** ...

  7. Oracle PLSQL游标、游标变量的使用

    参考文章:https://www.cnblogs.com/huyong/archive/2011/05/04/2036377.html 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实 ...

  8. Oracle使用游标查询所有数据表备注

    功能作用:应用对应的SQL语句,能方便快速的查询Oracle数据库指定用户的所有用户表说明,快速知道每个数据表是做什么的,方便写文档和方案. 运行环境:搭建好Oracle数据库,并使用PQ/SQL D ...

  9. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

随机推荐

  1. 响应式js设置

    <script> (function anonymous() { // 声明一个函数,并直接的执行 function computed() { let HTML = document.do ...

  2. 完整的vue+vuex+api-router+database请求流程

  3. SharePoint2013修复报错

         今天项目组的Sharepoint2013不小心被卸载了,本想着直接修复,谁知道在修复的时候一直报错,说找不到什么文件.报的就是类似于这样的错误: Product: ######### -- ...

  4. 获取已安装app的bundle id

    备注:以下是私有api 苹果审核会被拒绝. 导入头文件 #import <objc/runtime.h> /// 获取其他APP信息(iOS11无效) + (NSArray *)getOt ...

  5. 【APUE】Chapter3 File I/O

    这章主要讲了几类unbuffered I/O函数的用法和设计思路. 3.2 File Descriptors fd本质上是非负整数,当我们执行open或create的时候,kernel向进程返回一个f ...

  6. Python全栈 MongoDB 数据库(数据的查找)

      非关系型数据库和关系型数据库的区别? 不是以关系模型构建的,结构自由 非关系型数据库不保证数据一致性 非关系型数据库可以在处理高并发和海量数据时弥补关系数据库的不足 非关系型数据库在技术上没有关系 ...

  7. Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)

    HTTP协议? HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型.HTTP是一个无状态的协议. 通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了 ...

  8. 09-Mysql数据库----外键的变种

    本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出两张表之间的关系 分析步骤: ...

  9. 第十三次ScrumMeeting会议

    第十三次Scrum Meeting 时间:2017/12/1 地点:咖啡馆 人员:策划组美工组 名字 完成的工作 计划工作 蔡帜 完成公式的基本策划,Bug数量产生机制设计 科技树方面机制确定 游心 ...

  10. Java FTP下载文件以及编码问题小结

    问题 之前在开发过程中,遇到了一点问题,我要访问一个FTP服务器去下载文件详细情况如下: 1. 需要传入一个可能为中文的文件名: 2. 通过文件名去FTP上寻找该文件: 3. FTP服务器的命名编码为 ...