zoukankan      html  css  js  c++  java
  • orcale 之游标的属性

      无论是显式游标还是隐式游标都会有四个属性分别是:%ISOPEN、%FOUND、%NOTFOUND、%ROWCOUNT 下面我们分别对着几种属性进行分析。

    %FOUND

      该属性表示当前游标是否指向有效的一行,结果是一个Boolean 类型的。这个属性一般用来判断是否结束当前游标的使用。

    OPEN emp_cur; --打开游标
      --将第一行的数据放入变量中,之后游标后移
      FETCH emp_cur INTO emp_no, emp_nanme;
      LOOP
        EXIT WHEN NOT emp_cur%FOUND; --如果游标已经到末尾结束
        IF emp_no = '7839' THEN
          INSERT INTO t_emp values(emp_no,emp_nanme);
        else
          INSERT INTO t_emp2 values(emp_no,emp_nanme);
        END IF;
        FETCH emp_cur INTO emp_no, emp_nanme;
      END LOOP;
    CLOSE emp_cur; --关闭游标

      在隐式游标中引用方法为 SQL%FOUND。

    delete from student where sid = 1;
    if SQL%FOUND THEN
        INSERT INTO states values(1,1);
    else
        INSERT INTO states values(1,0);
    end if;

    %NOTFOUND

      这个属性和上面的 %FOUND 很类似,只不过结果相反。这里就不举例子了,大家自己练习下。

    %ROWCOUNT

      这个属性记录了游标取过记录的行数,也可以理解为当前游标所在的行数。这个属性在循环的时候十分有效。

    LOOP
        FETCH emp_cur INTO emp_no, emp_nanme;
        EXIT WHEN emp_cur%ROWCOUNT=10;
        ...
    END LOOP;

      在隐式游标中使用 %ROWCOUNT

    %ISOPEN

      顾名思义是表示游标是否处于打开的状态。在我们的实际使用前最好使用该属性进行检查。

    IF emp_cur%ISOPEN THEN
        FETCH emp_cur INTO emp_no, emp_nanme;
    ELSE
        OPEN emp_cur
    END IF;

      在隐式游标中可以使用 SQL%ISOPEN 进行引用,但是需要说的是隐式游标中 SQL%ISOPEN 总是为 TRUE 因此隐式游标中不需要打开游标关闭游标,也不需要对游标的状态进行检查。

  • 相关阅读:
    还零钱
    递归与动态规划II-汉诺塔
    leetcode 95. Unique Binary Search Trees II
    技术实力详解
    正反向路由
    usermod命令、用户密码管理、mkpasswd命令
    作为阿里的面试官,我有话想说。
    [招聘] 阿里巴巴-淘系技术部,长期内推,专人跟进。
    Vue源码翻译之渲染逻辑链
    Vue源码翻译之组件初始化。
  • 原文地址:https://www.cnblogs.com/brother-four/p/6523415.html
Copyright © 2011-2022 走看看