`
war_martin
  • 浏览: 115314 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle动态游标实例

阅读更多

1,带参数的游标  
   
    与存储过程和函数相似,可以将参数传递给游标并在查询中使用。这对于处理在某种条件下打开游标的情况非常有用。它的语法如下:  
   
  CURSOR   cursor_name[(parameter[,parameter],...)]   IS   select_statement;    
   
    定义参数的语法如下:  
   
  Parameter_name   [IN]   data_type[{:=|DEFAULT}   value]    
   
    与存储过程不同的是,游标只能接受传递的值,而不能返回值。参数只定义数据类型,没有大小。    
   
    另外可以给参数设定一个缺省值,当没有参数值传递给游标时,就使用缺省值。游标中定义的参数只是一个占位符,在别处引用该参数不一定可靠。  
   
    在打开游标时给参数赋值,语法如下:  
   
  OPEN   cursor_name[value[,value]....];    
   
    参数值可以是文字或变量。  
   
    例:  
   
  DECALRE  
   
  CURSOR   c_dept   IS   SELECT   *   FROM   dept   ORDER   BY   deptno;  
  CURSOR   c_emp   (p_dept   VARACHAR2)   IS  
  SELECT   ename,salary  
  FROM   emp  
  WHERE   deptno=p_dept  
  ORDER   BY   ename  
  r_dept   DEPT%ROWTYPE;  
  v_ename   EMP.ENAME%TYPE;  
  v_salary   EMP.SALARY%TYPE;  
  v_tot_salary   EMP.SALARY%TYPE;  
   
  BEGIN  
   
  OPEN   c_dept;  
  LOOP  
  FETCH   c_dept   INTO   r_dept;  
  EXIT   WHEN   c_dept%NOTFOUND;  
  DBMS_OUTPUT.PUT_LINE('Department:'||   r_dept.deptno||'-'||r_dept.dname);  
  v_tot_salary:=0;  
  OPEN   c_emp(r_dept.deptno);  
  LOOP  
  FETCH   c_emp   INTO   v_ename,v_salary;  
  EXIT   WHEN   c_emp%NOTFOUND;  
  DBMS_OUTPUT.PUT_LINE('Name:'||   v_ename||'   salary:'||v_salary);  
  v_tot_salary:=v_tot_salary+v_salary;  
  END   LOOP;  
  CLOSE   c_emp;  
  DBMS_OUTPUT.PUT_LINE('Toltal   Salary   for   dept:'||   v_tot_salary);  
  END   LOOP;  
  CLOSE   c_dept;  
  END;    
2. 字符串变量

动态游标就是动态定义游标。  
  declare  
  type   t_sor   is   ref   cursor;  
  v_sor   t_sor;     --必需的,通过对象变量实现.  
  ...  
  begin    
  ..  
  end;  
  /

 

给一个完整的例子:  
  create   or   replace   procedure   SP_CLEAR(V_TABLE   IN   STRING)   IS  
   
      TYPE   cur_type   IS   REF   CURSOR;  
      c_tab   cur_type;  
      v_str   STRING(2000);  
      v_tab   t_clear.wlbmc%TYPE;  
      v_sql   STRING(3000);  
   
   
  begin  
      --Get   table   from   v_table  
      --Reorder   these   tables  
      v_str:=upper(v_table);  
      v_str:=REPLACE(v_str,',',''',''');  
      v_str:=''''||v_str||'''';  
      v_sql:='SELECT   WLBMC   FROM   T_CLEAR   WHERE   TRIM(WLBMC)   IN   ('||v_str||')   ORDER   BY   BZ   DESC';  
      OPEN   c_tab   FOR   v_sql;  
      LOOP  
          FETCH   c_tab   INTO   v_tab;  
          EXIT   WHEN   c_tab%NOTFOUND;  
          v_sql:='delete   from   '||v_tab||'';  
          EXECUTE   IMMEDIATE   v_sql;      
      END   LOOP;        
      COMMIT;      
      --deal   with   exception    
      EXCEPTION    
          WHEN   OTHERS   THEN  
                ROLLBACK;  
                RAISE;  
  end   SP_CLEAR;  
  /   
 

3.字符串变量例子2

给你一个完整的例子:  
  DECLARE  
        TYPE   EmpCurTyp   IS   REF   CURSOR;  
        emp_cv       EmpCurTyp;  
        emp_rec     emp%ROWTYPE;  
        sql_stmt   VARCHAR2(200);  
        my_job       VARCHAR2(15)   :=   'CLERK';  
  BEGIN  
        sql_stmt   :=   'SELECT   *   FROM   emp   WHERE   job   =   :j';  
        OPEN   emp_cv   FOR   sql_stmt   USING   my_job;  
        LOOP  
              FETCH   emp_cv   INTO   emp_rec;  
              EXIT   WHEN   emp_cv%NOTFOUND;  
              --   process   record  
        END   LOOP;  
        CLOSE   emp_cv;  
  END;   

 

 

带输入参数的动态游标的实例

 

分享到:
评论
1 楼 nevergiveup_che 2014-09-09  
emp%ROWTYPE 楼主,这个emp 是在哪定义的啊,怎么报错提示未定义,需要定义一个结构类型的EMP 吗

相关推荐

    Oracle游标实例.txt

    标题“Oracle游标实例”直接点明了文章的主题,即通过具体的示例来讲解Oracle中的游标使用方法。描述重复了标题内容,这表明文件的主要目的是提供关于Oracle游标的实例代码,供学习和参考。 ### 标签 标签“Oracle...

    oracle游标使用及实例

    ### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常...

    ORACLE 游标使用示例

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

    oracle 的函数、存储过程、游标、简单实例

    本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和开发人员日常工作中不可或缺的部分。 首先,我们来了解**Oracle函数**。函数是预定义的代码块,接受零个或多...

    oracle 管道函数+动态游标

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

    Oracle游标的使用实例详解

    Oracle游标是数据库管理系统中的一种重要机制,它允许应用程序按需逐行处理查询结果集,而不是一次性处理所有数据。游标对于交互式和事务性的应用尤其有用,因为它们可以控制数据流并根据需要进行交互。 首先,让...

    oracle游标优化

    ### Oracle游标优化 在Oracle数据库管理中,游标是一种重要的机制,用于处理查询结果集。游标可以被看作是存储查询结果的一种临时区域,它允许用户通过循环逐行处理这些结果。游标不仅可以提高应用程序的灵活性,还...

    Orcle游标实例.txt

    ### Oracle 游标实例解析及应用 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种数据库对象,它允许程序能够逐行处理查询结果集中的数据。与直接执行SQL语句获取整个结果集不同,游标可以逐行...

    Oracle存储过程实例使用显示游标

    在本例中,“Oracle存储过程实例使用显示游标”着重展示了如何在存储过程中调用函数,并通过游标来处理和更新数据。 首先,我们需要了解存储过程的基本结构。一个存储过程通常包含以下部分: 1. **声明部分**:在...

    oracle游标实例

    Oracle游标是数据库管理系统中处理查询结果的一种方法,它允许我们逐行处理数据,而不仅仅是一次性获取所有结果。在Oracle中,游标分为隐式游标和显式游标。 ### 隐式游标 Oracle数据库在执行DML(插入、删除、更新...

    Oracle游标使用大全

    ### Oracle游标使用大全 #### 一、概述 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集中的数据。游标允许程序逐行处理数据,这在需要对多行数据进行循环处理时非常有用。本文档旨在提供一个全面的...

    多个ORACLE 游标+SQL 游标 小例子+帮助文档

    本教程将深入介绍Oracle和SQL中的游标概念,以及如何通过实例来理解和应用它们。 首先,我们要明白什么是游标。游标(Cursor)是一个数据库系统组件,它允许我们在查询结果集中移动,一次处理一行数据。这在处理...

    既简单,又使用的游标实例

    以下是对"既简单,又使用的游标实例"的详细解释。 游标,英文名为Cursor,是数据库管理系统(DBMS)提供的一种机制,用于在查询结果集中移动并处理单个记录。它在关系数据库中起着类似指针的作用,可以定位到结果...

    job 存储过程 视图 游标结合实例

    以上就是Oracle Job、存储过程、视图和游标在实际应用中的基本概念和结合实例,它们共同构成了数据库管理和自动化操作的重要部分。理解并熟练掌握这些工具,能显著提升数据库的管理和维护效率。

    游标实例与返回结果集的存储过程

    根据提供的文件信息,我们可以深入探讨其中涉及的关键概念和实践应用,包括Oracle中的游标使用方法、存储过程的定义以及如何创建并调用返回结果集的存储过程。 ### 1. 游标的使用方法 #### 1.1 游标基本概念 在...

    触发器,游标实例

    在PL/SQL(Oracle的编程语言)中,游标允许我们通过声明、打开、提取和关闭等步骤来遍历和操作数据。在上述例子中,定义了一个名为`cur_age`的游标,用于从`t_borrowRecord`表中选取特定学生的所有借书日期...

    oracle游标的用法

    oracle游标的用法,比较通俗易懂的讲解游标用法,有实例

    用callabledStatement调用oracle存储过程实用例子(IN OUT 传游标)

    Oracle 存储过程调用 CallabledStatement 实用例子(IN OUT 传游标) 一、Oracle 存储过程简介 Oracle 存储过程是一种可以在 Oracle 数据库中存储和执行的程序单元。存储过程可以由多种语言编写,例如 PL/SQL、...

    Oracle存储过程返回游标实例详解

    系统游标,通常以`sys_refcursor`类型表示,是Oracle内置的一种方式,用于处理动态SQL的结果集。下面是如何声明和使用系统游标的步骤: - 创建存储过程: ```sql create or replace procedure p_temp_procedure ...

    详解Oracle游标的简易用法

    本篇将详细解释Oracle游标的简易用法,并通过实例代码来演示如何使用。 首先,游标定义了一个SQL查询的结果集,但并不立即执行该查询。在Oracle中,游标由`DECLARE`语句定义,可以包括变量、条件等。例如: ```sql...

Global site tag (gtag.js) - Google Analytics