ref游标(动态游标)

参照变量--用于存放数值指针的变量

   游标变量(ref cursor)

  使用游标时,当定义游标时不需要指定相应的select语句,但是当使用

   游标时(open时)需要指定select语句,这样一个游标就与一个select语句结合了。

游标实例:

1.请使用pl/sql编写一个块,可以输入部门号,并显示该部门所有员工姓名和他的工资。

2.在1的基础上,如果某个员工的工资低于200元,就添加100元。

declare

--定义游标类型

typesp_emp_copy_cursor is ref cursor;

--定义一个游标变量

test_cursor sp_emp_copy_cursor;

v_ename emp_copy.ename%type;

v_sal emp_copy.sal%type;

begin

  --把test_cursor和一个select结合

  opentest_cursor for select ename,sal from emp_copy wheredeptno=&no;

  --循环取出(fethch)

  loop

    fetch test_cursor into v_ename,v_sal;

    --判断是否test_cursor是否为空

    exit when test_cursor%notfound;

    dbms_output.put_line(名字:‘||v_ename||工资:‘||v_sal);

  end loop;

  --关闭游标

  closetest_cursor;

end;

来自:http://blog.sina.com.cn/s/blog_62e75cd001015mkr.html

ref游标(动态游标)

时间: 2024-10-02 20:22:47

ref游标(动态游标)的相关文章

『ORACLE』 PLSQL动态游标的使用(11g)

#静态游标指的是程序执行的时候不需要再去解析sql语言,对于sql语句的解析在编译的时候就可以完成的. 动态游标由于含有参数,对于sql语句的解析必须要等到参数确定的时候才能完成. 从这个角度来说,静态游标的效率也比动态游标更高一些. #游标的相关概念: 定义: 游标它是一个服务器端的存储区,这个区域提供给用户使用,在这个区域里 存储的是用户通过一个查询语句得到的结果集,用户通过控制这个游标区域当中 的指针 来提取游标中的数据,然后来进行操作. 实质: 是用户在远程客户端上对服务器内存区域的操作

Oracle异常处理,动态游标

小例子,方便以后查阅. 包头需要声明:   type C_CURSOR is ref cursor; procedure visitcount(in_date number, out_code out number, out_desc out varchar2 ) is t_date number(8); t_datepre number(8); t_sql varchar2(2000); t_tempcount number(8); c_data C_CURSOR; v_cityname va

Oracle动态游标实现动态SQL循环遍历,和静态游标的比较。

动态游标可以遍历动态的表, 格式: TYPE 游标类型 IS REF CURSOR; --定义一个动态游标游标名 游标类型; 如果查询的表的数据不同的,动态变化的,这时候可以用动态游标. 需要注意的是,动态游标的定义, 在普通存储过程中:需要放在 is 后面的第一行. 动态游标通过:open 游标 for 字符串,形式使用,遍历. create or replace procedure P_TEST_SQL is TYPE ref_cursor_type IS REF CURSOR; --定义一

oracle 隐式游标,显示游标,游标循环,动态SELECT语句和动态游标,异常处理和自定义异常

游标的概念:    游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁 盘的表中调到计算机内存中进行处理,最后将处理结果显示出来或最终写回数据库.这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率.游标有两种类型:显式游标和隐式游标.在前述程序中用到的SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对于这种 形式的查询和DML操作,系统都会使用一个隐式游标.但是如果要

动态游标(例如表名作为参数)以及动态SQL分析

表名作为参数的动态游标 DECLARE v_table_name VARCHAR2(30) := 'CUX_MES_WIP_BARCODE_MAP'; --l_rec SYS_REFCURSOR; TYPE t_data IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER; TYPE t_cur IS REF CURSOR; l_data t_data; l_rec t_cur; l_cur VARCHAR2(4000); v_fm_barcode

存储过程使用动态游标一例

数据表结构如下: SQL> desc record;Name        Type         Nullable Default Comments ----------- ------------ -------- ------- -------- RECORD_GUID VARCHAR2(50) Y                         DNIS        VARCHAR2(15) Y                         ANI         VARCHAR2

【转】静态游标和动态游标

静态游标在打开时会将数据集存储在tempdb中,因此显示的数据与游标打开时的数据集保持一致,在游标打开以后对数据库的更新不会显示在游标中.   动态游标在打开后会反映对数据库的更改.所有UPDATE.INSERT 和 DELETE 操作都会显示在游标的结果集中,结果集中的行数据值.顺序和成员在每次提取时都会改变. 在定义游标的时候如果不指定STATIC关键字,默认是DYNAMIC的. 动态游标的打开速度比静态游标的打开速度快.当打开静态游标时,必须生成内部临时工作表,而动态游标则不需要. 在联接

zbb20170601 oracle PL/SQL 语句块 游标 自定义游标 异常处理EXCEPTION

--打开日志输出 set serverout on -- PL/SQL 语句块: -- 声明部分 declare v_i number; v_sum number:=0; -- 执行部分 begin v_i := 1; -- 简单loop循环 loop v_sum:=v_sum+v_i; v_i:=v_i+1; if v_i>100 then exit;-- 跳出循环 end if; end loop; dbms_output.put_line(v_sum); -- 异常处理部分 end; --

Oracle游标和游标变量的区别

oracle游标我们经常用到,下面介绍oracle游标和游标变量的区别. oracle游标是数据库中一个命名的工作区,当游标被声明后,他就与一个固定的SQL想关联,在编译时刻是已知的,是静态的,它永远指向一个相同的查询工作区. 游标变量可以在运行时刻与不同的SQL语句关联,在运行时可以取不同的SQL语句.它可以引用不同的工作区. oracle游标和游标变量是不能相互代替的. 如何定义游标类型: type ref_type_name is ref cursor [RETURN return_typ