zoukankan      html  css  js  c++  java
  • 从概念到示例—Oracle引用(REF)游标

    Ref游标 又称 "动态游标"
     (1)、在运行时使不同的语句与之关联
     (2)、Ref游标可以使用游标变量
     .游标变量
       a. 一种引用类型
       b. 可以再运行时指向不同的存储位置
       c. Close语句关闭游标并释放用于查询的资源
     .游标变量的类型
       a.具有约束的游标变量
          - 也就是具有返回类型的游标变量 也称为”强游标"
       b.无约束的游标变量
          - 也就是没有返回类型的游标变量 也称为 “弱游标”

    示例1:  弱型游标示例
    声明时不需指定查询语句,即不指向任何区域
    declare
       type RefEmpCur  is ref cursor;  --声明引用游标类型 游标返回的类型没有限制
       EmpCur RefEmpCur;  --游标变量
       EmpRow emp%rowtype; --存储游标查询到得结果
       flag int:=0;
    begin
       flag :=&flag;
       if flag=0 then
          open EmpCur  for select * from emp where sal>500 and sal<2000;
       elsif  flag=1 then
          open EmpCur for select * from  emp where sal>=2000;
       elsif  flag=2 then
          open EmpCur for select * from  dept;  --弱类型游标对目标表没有限制,数据可以使来自任何表
       else
          open EmpCur for select * from emp;
       end if;
      /* for循环不能用于Ref游标,因为它是自动打开游标
       for EmpRow in EmpCur  loop
        DBMS_output.put_line('empno='||EmpRow.empno);
       end loop;
       */
       loop
          exit when EmpCur%notfound;  --如果没有查询到数据就退出
          fetch EmpCur into EmpRow;
          DBMS_output.put_line('empno='||EmpRow.empno);
       end loop;
       close EmpCur;
    end;
    /

    示例1:  强型游标示例
    declare
       type RefEmpCur  is ref cursor return emp%rowtype;  --游标仅能打开emp表的数据
       EmpCur RefEmpCur;  --游标变量
       EmpRow emp%rowtype; --存储游标查询到得结果
       flag int:=0;
    begin
       flag :=&flag;
       if flag=0 then
          open EmpCur  for select * from emp where sal>500 and sal<2000;
       elsif  flag=1 then
          open EmpCur for select * from emp where sal>=2000;
       else
          open EmpCur for select * from emp;
       end if;

       loop
          exit when EmpCur%notfound;  --如果没有查询到数据就退出
          fetch EmpCur into EmpRow;
          DBMS_output.put_line('empno='||EmpRow.empno);
       end loop;
       close EmpCur;
    end;
    /
    限制
     1.不能在程序包中声明游标变量
     2.远程子程序不能接受游标变量的值
     3.不能使用比较操作符对游标变量进行相等或不相等测试
     4.不能将空值赋予游标变量
     5.表不能存储游标变量的值

  • 相关阅读:
    Windows Store App 主题动画
    Windows Store App 过渡动画
    Windows Store App 控件动画
    Windows Store App 近期访问列表
    Windows Store App 文件选取器
    Windows Store App 访问应用内部文件
    Windows Store App 用户库文件分组
    Windows Store App 获取文件及文件夹列表
    Windows Store App 用户库文件夹操作
    Windows Store App 用户库文件操作
  • 原文地址:https://www.cnblogs.com/sunjie9606/p/2167420.html
Copyright © 2011-2022 走看看