oracle有关游标的知识

一:前言

今天我自己第二次写游标,我擦,觉得自己在数据库方面需要很大的提高啊。今天遇到三个问题,第一个是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有关游标的知识

时间: 2024-07-31 13:41:26

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

Oracle的游标介绍

Oracle的游标介绍 Oracle中的PL/SQL的游标是指把数据库中查询出来的数据以临时表的形式存放在内存中,游标可以对存储在内存中的数据进行操作,返回一条或者一组数据,或者一条数据也不返回.PL/SQL中的记录和表类型虽然也能用来存储数据,但对一组存储在内存中的数据进行操作,还是不太方便,游标恰好是这方面的工具. PL/SQL包含隐含游标和显示游标,其中隐含游标用于处理SELECT INTO和DML语句,而显示游标则专门用于处理SELECT语句返回的多行数据,游标的基本操作有: - 声明游

复习Oracle中的一点知识

Oracle 10g Oracle是为网格计算而设计的 10g中的g就是指grid computing Oracle将数据存储在文件中,保存不同信息的文件(数据文件,控制文件,日志文件)就组成了数据库的物理结构 逻辑结构:schema, extent, data block, segment Schema 数据库对象的集合,创建用户时会生成一个与用户同名的Schema,Schema 直接处理data的逻辑结构(table, view, index, clusters) View -- 虚拟的,可

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

应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在ID字段,则判断是否是整形,如果不是就重命名字段为[表名ID],然后新增ID,如果不存在则直接添加自增一ID的主键 操作说明:打开PQSQL连接数据库后直接执行下面的详细脚本代码运行即可,脚本有风险(会删除原来的索引跟主键约束),请不要轻易在正式运行的数据库上直接执行 --Oracle使用游标为所有用

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

应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用 测试结果:经查询已删除所有数据 存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自行删除或者过滤掉该表,见下图 操作办法:直接将下面的脚本内容复制到PQSQL中执行即可 --Oracle使用游标删除所有用户数据表中的所有记录脚本 declare mystring NVARCHAR2(1000):=''; --定义要输出的字符串变量 cursor mycursor is --定义游

oracle中游标与动态绑定变量

一.      游标: 用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等等. 在Oracle9i之前,使用FETCH语句每次只能提取一行数据:从Oracle9i开始,通过使用FETCH…BULK COLLECT INTO语句,每次可以提取多行数据.语法如下: (1) FETCH cursor_name INTO variable1,variable2,…: 此方法必须要

Oracle数据库游标案例讲解与源码 (2)

关于此案例的详细分析,请参看  <Oracle数据库游标案例讲解与源码>一文 http://blog.csdn.net/sinat_26342009/article/details/45199827 案例要求: 利用游标转换两张表的数据. 首先,将满足以下三个条件的数据插入到一张新表(productinfo_tmp)中 : <1>价格大于1000 <2>产地为"中国"或"杭州" <3> 商品类型为"家电&qu

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

应用场合:参考网上查询数据表的所有字段名代码,使用游标生成指定单个表的所有字段名跟逗号组成的用于select  逗号隔开的字段名列表 from字符串等场合. 查询结果输出如下: 当前数据表TB_UD_USER的字段列表字符串为AH,BIRTHPLACE,BM,CELLPHONE,CJGZRQ,DEPARTMENT2,DJJID,GZCX,GZKH,GZSFZH,HJDZ,HYZK,ID,JHRQ,JTZZ,LAFX_LD,LJDZ,LLY,LXDH,NAME,NXDH,POLICENUMBER,

sql优化(oracle)- 第一部分 知识准备

第一部分 知识准备                                               1.  sql执行过程                     2.  sql 共享                   3.  绑定变量                      4.  数据表访问方式 5.  sql 执行顺序 6.  索引使用 1. sql执行过程1)执行过程 当一个oracle实例接收到一条sql后,执行过程如下: 1) create  a cursor  创建

Oracle数据库速查知识文档

项目介绍 该项目记录了Oracle相关的速查知识汇总,主要涉及了oracle基础使用.SQL基础.oracle函数.oracle触发器.oracle高级查询.PL/SQL编程基础.PL/SQL存储过程等.若有新增,还将不断添加中. SQL基础部分 1.简介 Oracle Database,又名Oracle RDBMS,或简称Oracle,是甲骨文公司的一款关系数据库管理系统.本课程主要介绍Oracle的SQL基础,包括表空间的概念,如何登录Oracle数据库,如何管理表及表中的数据,以及约束的应