【问题标题】:Why Do I not get the exact numbers of rows that I've fetched?为什么我没有得到我获取的确切行数?
【发布时间】:2016-10-26 18:22:59
【问题描述】:

我从 3 个月开始学习 PLSQL。现在我正在练习显式游标。我编写了一个简单的游标,并使用属性 %ROWCOUNT 查询 5 行员工,但屏幕上只收到 4 名员工。为什么?

SET SERVEROUTPUT ON
DECLARE
  CURSOR cur_emp IS
    SELECT e.employee_id, e.last_name, d.department_id, d.department_name
    FROM employees e
    JOIN departments d
    ON (e.department_id = d.department_id);

  v_emp_id employees.employee_id%TYPE;
  v_emp_name employees.last_name%TYPE;
  v_dept_id departments.department_id%TYPE;
  v_dept_name departments.department_name%TYPE;
BEGIN
  OPEN cur_emp;
    LOOP
      FETCH cur_emp
      INTO v_emp_id, v_emp_name, v_dept_id, v_dept_name;
      EXIT WHEN cur_emp%ROWCOUNT = 5;
      DBMS_OUTPUT.PUT_LINE('EMPLOYEE ID: ' || v_emp_id || ' EMPLOYEE: ' ||
        v_emp_name || ' DEPARTMENT ID: ' || v_dept_id || ' DEPARTMENT NAME: ' ||
        v_dept_name);
    END LOOP;   
  CLOSE cur_emp;
END;
/

【问题讨论】:

    标签: sql plsql cursors


    【解决方案1】:

    循环首先检查条件,因此要写入 4 个员工,检查下一个员工的行数并退出循环,您必须将 ROWCOUNT > 5, ROWCOUNT = 6 或将 EXIT WHEN 条件移至调用后DBMS_OUTPUT.

    【讨论】:

      猜你喜欢
      • 2013-08-19
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 2013-07-15
      • 2021-06-10
      相关资源
      最近更新 更多