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

    结束 

  • 相关阅读:
    0-1性能测试需求分析
    1-10jmeter关联,正则表达式(待巩固)
    1-9jmeter集合点,并发操作
    1-8.jmeter设置断言(检查点)
    1-6jmeter性能测试基础
    泛型中的协变和逆变
    jsPlumb
    jQuery UI vs Kendo UI & jQuery Mobile vs Kendo UI Mobile
    31天重构
    Visual Studio 小工具
  • 原文地址:https://www.cnblogs.com/gaojian/p/2769377.html
Copyright © 2011-2022 走看看