2016-10-26 6 views
-1

私は3ヶ月以来PLSQLを学んでいます。今私は明示的なカーソルを練習しています。私は単純なカーソルを書いており、従業員のクエリ5行に対して属性%ROWCOUNTを使用しましたが、私は画面上に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; 
/

image

答えて

1

ループは最初ので、4人の従業員を書き、次のいずれかの行数を確認し、ROWCOUNT> 5を配置する必要がループを終了し、ROWCOUNT = 6または移動するには、条件をチェックDBMS_OUTPUTに電話をした後にEXIT WHENの状態になります。

+0

ありがとうございました!私は今理解した。 – Rattlesnake

関連する問題