为什么我得不到我已提取的确切行数?
Why Do I not get the exact numbers of rows that I've fetched?
我学习 PLSQL 已经 3 个月了。现在我正在练习显式游标。我写了一个简单的游标,我使用了属性 %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;
/
循环首先检查条件,所以要写 4 名员工,检查下一个员工的行数并退出循环,您必须将 ROWCOUNT > 5,ROWCOUNT = 6 或将 EXIT WHEN
条件移动到在您致电 DBMS_OUTPUT
.
之后
我学习 PLSQL 已经 3 个月了。现在我正在练习显式游标。我写了一个简单的游标,我使用了属性 %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;
/
循环首先检查条件,所以要写 4 名员工,检查下一个员工的行数并退出循环,您必须将 ROWCOUNT > 5,ROWCOUNT = 6 或将 EXIT WHEN
条件移动到在您致电 DBMS_OUTPUT
.