`
lanhongbo
  • 浏览: 2751 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

oracle 动态游标

阅读更多
今天写了个动态游标 使用传入参数
关于游标分类以及用法:http://hi.baidu.com/edeed/blog/item/725749540ee73651574e006a.html
思路就是先拼好SQL 然后开动态游标
ORALCE10G也支持正则表达式 呵呵 刚刚好可以实现动态传入参数

procedure TJ_PDA_TESTDATA(v_indicator in varchar) is
  type rc is ref cursor;
  l_cursor     rc;
  l_sqlstr     varchar(2000);
  l_sqlstr_new varchar(2000);
  l_raw_use    raw_pda_testdata_tj%rowtype;
  l_date       varchar(20);
begin
      select to_char(sysdate, 'YYYY-MM-DD') into l_date FROM DUAL;
      l_sqlstr := 'select a.region_id,
                  sum(count) totle,
                  ''$v_date'' creatdate,
                  ''$v_indicator'' indicator,
           sum(case lev  when 1 then count else 0 end) lev1,
           sum(case lev  when 2 then count else 0 end) lev2,
           sum(case lev  when 3 then count else 0 end) lev3,
           sum(case lev  when 4 then count else 0 end) lev4,
           sum(case lev  when 5 then count else 0 end) lev5,
           sum(case lev  when 6 then count else 0 end) lev6
            from (select zhiju_id region_id, $v_indicator lev, count(1) count
                    from raw_pda_testdata_use t
                    where creatdate like ''$v_date%''
                     and zhiju_id != ''-1''
                   group by zhiju_id, $v_indicator) a
           group by region_id';

      SELECT REGEXP_REPLACE(l_sqlstr, '\$v_date', l_date) into l_sqlstr FROM dual;
      SELECT REGEXP_REPLACE(l_sqlstr, '\$v_indicator', v_indicator) into l_sqlstr_new  FROM dual;
      open l_cursor for l_sqlstr;
      loop
        fetch l_cursor
          into l_raw_use;
        exit when l_cursor%notfound;
        begin
          insert into raw_pda_testdata_tj
          values
            (l_raw_use.region_id,
             l_raw_use.creatdate,
             l_raw_use.indicator,
             l_raw_use.totle,
             l_raw_use.lev1,
             l_raw_use.lev2,
             l_raw_use.lev3,
             l_raw_use.lev4,
             l_raw_use.lev5,
             l_raw_use.lev6);
          commit;
        EXCEPTION
          WHEN others THEN
            rollback;
        end;
      end loop;
      close l_cursor;

EXCEPTION
  WHEN others THEN
    null;
END; -- Procedure
分享到:
评论

相关推荐

    Oracle 数据库游标使用大全

    Oracle数据库游标是数据库管理系统中用于处理查询结果的一种机制,它允许程序逐行处理查询结果,而不是一次性加载所有数据。在Oracle中,游标对于实现复杂的数据操作和控制流程至关重要,特别是在存储过程和触发器中...

    oracle游标练习答案

    关于游标使用问题的练习和答案。游标分隐式和显示游标;动态和ref游标。适用于初学者。

    oracle 隐式游标,显示游标,游标循环

    ### Oracle中的游标详解 #### 一、引言 在Oracle数据库中,游标是一种非常重要的机制,它允许用户在程序中对查询结果进行逐行处理。游标分为两种主要类型:**隐式游标**和**显示游标**。此外,还可以利用游标进行...

    ORACLE显式游标和动态游标的使用.pdf

    总结来说,Oracle数据库中的显式和动态游标提供了一种灵活的方式来处理查询结果,特别是对于需要逐行操作数据或在运行时动态确定查询条件的情况。正确理解和使用游标是开发高效、可控的数据库应用程序的关键。

    oracle数据库游标使用例子

    以下是关于Oracle游标使用的一些关键知识点: 1. **游标的基本概念**: 游标(Cursor)是一种机制,它允许我们遍历和操作由SQL查询返回的结果集。通过游标,我们可以控制数据的读取顺序,一次只处理一行,或者在...

    快速掌握Oracle数据库游标的使用方法

    Oracle 数据库游标的使用方法 Oracle 数据库游标是指在查询返回结果超过一行时,需要使用的显式游标。用户不能使用 select into 语句,而是需要使用游标来处理多行查询结果。在 PL/SQL 中,隐式游标会在查询开始时...

    Oracle封锁及动态游标技术分析与应用.pdf

    Oracle数据库是广泛应用的关系型数据库系统,其封锁机制和动态游标技术对于实现并发访问和高效处理大量数据至关重要。封锁技术主要用于解决多用户环境下数据一致性问题,确保事务的隔离性和数据的完整性。 1. ...

    Oracle数据库游标使用.rar

    Oracle数据库游标是数据库编程中的一个重要概念,尤其在处理大量数据时,它们提供了一种有效且灵活的方法。游标允许程序逐行访问查询结果集,而不是一次性加载所有数据。这在处理复杂的数据操作,如循环处理、条件...

    oracle游标的总结oracle游标的总结

    Oracle 游标可以分为两类:静态游标和动态游标。 1. 静态游标:静态游标是使用 cursor...is 语句定义的游标,它可以对查询语句(select)返回的多条记录进行处理。 2. 动态游标:动态游标是在运行期间传递参数来...

    Oracle的游标学习

    Oracle的游标是数据库开发中的一个重要概念,尤其在PL/SQL编程中,游标用于处理SQL查询结果集,使得我们能够逐行处理数据,而不仅仅局限于一次性获取所有数据。在这个主题中,我们将深入探讨游标的定义、类型、使用...

    oracle数据库的游标

    游标是Oracle数据库中一个重要的概念,它是一种在内存中用于存储SQL查询结果的临时工作区域。使用游标可以方便地访问查询结果集中的每一行,这对于处理大量数据是非常有用的。游标主要分为两种类型:显式游标和隐式...

    oracle数据库游标实验报告

    oracle数据库游标实验报告!oracle数据库游标实验报告!oracle数据库游标实验报告!

    oracle笔记游标的使用

    oracle笔记游标的使用,游标的详细代码案例,游标知识点笔记!

    静态、动态sql及各种游标

    静态、动态SQL及各种游标 静态SQL和动态SQL是两种不同的SQL语句执行方式,分别应用于不同的场景中。静态SQL是指在PL/SQL中直接运行的SQL语句,没有什么特别之处。动态SQL则是指利用EXECUTE IMMEDIATE语句执行的SQL...

    ORACLE 游标使用示例

    在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...

    oracle解决游标多维度循环查询效率过低方案

    多维度查询时通常需要建立多个游标循环,查询效率无法得到保障,现在通过游标和substr()函数相结合的方式提高查询效率

    非常详细的Oracle游标整理

    Oracle游标是数据库编程中非常重要的一个概念,主要用于处理SQL查询的结果集。游标允许我们按需逐行处理数据,而不是一次性加载所有结果。这里详细介绍了Oracle中的三种游标类型:隐式游标、显式游标和REF游标。 1....

    Oracle数据库游标使用大全

    Oracle数据库游标是PL/SQL编程中不可或缺的一部分,它们允许程序逐行处理查询结果,提供了更灵活的数据操作方式。在Oracle数据库中,游标主要分为两种类型:隐式游标和显式游标。 1. **隐式游标**: - 当在PL/SQL...

    oracle-游标使用汇总.doc

    Oracle数据库中的游标是处理查询结果集的一种重要机制,尤其在需要逐行处理多行数据时。游标允许我们按照需要遍历查询结果,并对每一行进行操作。本篇文章将详细解析Oracle数据库中游标的使用方法。 首先,游标分为...

    oracle 管道函数+动态游标

    根据提供的Oracle管道函数和动态游标的代码片段及描述,我们可以深入了解其背后的技术要点与实现细节。下面将逐一解析这些知识点。 ### Oracle管道函数 管道函数(Pipe-lined Function)是Oracle中一种特殊类型的...

Global site tag (gtag.js) - Google Analytics