zoukankan      html  css  js  c++  java
  • PLSQL中对cursor 使用的小例子

    开始

    SET SERVEROUTPUT ON;
    
    DECLARE
      v_empno emp.empno%TYPE;
      v_ename emp.ename%TYPE;
      
      CURSOR emp_cursor IS
      SELECT empno,ename from emp where empno<>1000;
      
    BEGIN
    
    LOOP
    
      IF NOT emp_cursor%ISOPEN  THEN
         OPEN emp_cursor;
      END IF; 
      
      FETCH emp_cursor INTO  v_empno,v_ename; 
      EXIT WHEN emp_cursor%NOTFOUND;
     
      dbms_output.put_line('empno is:' || v_empno || ' emp name is:' || v_ename);
        
    END LOOP;
    
    END;
    /

    运行结果

    anonymous block completed
    empno is:7369 emp name is:SMITH
    empno is:7499 emp name is:ALLEN
    empno is:7521 emp name is:WARD
    empno is:7566 emp name is:JONES
    empno is:7654 emp name is:MARTIN
    empno is:7698 emp name is:BLAKE
    empno is:7782 emp name is:CLARK
    empno is:7788 emp name is:SCOTT
    empno is:7839 emp name is:KING
    empno is:7844 emp name is:TURNER
    empno is:7876 emp name is:ADAMS
    empno is:7900 emp name is:JAMES
    empno is:7902 emp name is:FORD
    empno is:7934 emp name is:MILLER

    要注意的一点:FETCH 后,马上进行EXIT 比较好。这是因为如果不是这样,在循环中还有来一次,此时可能有干了一些操作,这回导致出现问题。

    还有一点,由于 第一次FETCH之前,%NOTFOUND 的值为空。

    所以如果 FETCH 从来没有真的成功过,那么 EXIT WHEN emp_cusor%NOTFOUND 有可能一直为NULL,这样就一直在循环里无法退出。所以,更好的写法是:

    EXIT WHEN emp_cursor%NOTFOUND OR emp_cursor%NOTFOUND IS NULL

    结束 

  • 相关阅读:
    aliyun搭博客从零到一
    centos8飞行驾驶舱和docker安装
    squid的三种模式
    Linux和windos路由
    ca认证(https)
    shell脚本1
    heartbeat双主高可用
    Linux字符界面字符颜色显示
    不同尺寸的图片垂直水平居中的三种形式
    两栏三栏自适应布局
  • 原文地址:https://www.cnblogs.com/gaojian/p/2769377.html
Copyright © 2011-2022 走看看