1
DECLARE
i employees.first_name%TYPE;
a employees.last_name%TYPE;
j employees.salary%TYPE;
v_cnt NUMBER;
CURSOR c1 IS
SELECT first_name
,last_name
,salary
FROM employees
WHERE employee_id BETWEEN 100 AND 105;
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO i, a, j;
dbms_output.put_line(i || ' ' || a || ' SALARY IS ' || j || ' row count is ' || v_cnt);
v_cnt := c1%ROWCOUNT;
EXIT WHEN c1%NOTFOUND;
END LOOP;
CLOSE c1;
END;
/
我上面的查詢基本上遍歷100和105,並打印出所有6名員工的工資之間的所有employee_id
。遊標屬性%NOTFOUND作爲退出語句中使用<code>dbms_output.put_line</code>返回混亂的結果
但是,我得到7個結果與上一個記錄的重複結果的最後一個。見下面
Steven King SALARY IS 24000 row count is
Neena Kochhar SALARY IS 17000 row count is 1
Lex De Haan SALARY IS 17000 row count is 2
Alexander Hunold SALARY IS 9000 row count is 3
Bruce Ernst SALARY IS 6000 row count is 4
David Austin SALARY IS 4800 row count is 5
David Austin SALARY IS 4800 row count is 6
爲什麼我的結果會像這樣返回?爲什麼不是我的遊標rowcount將第一條記錄標記爲1?
假設'David Austin'在你的數據中有兩次,僱員ID爲100到105.至於第一個'v_cnt'值。 。 。它缺少,因爲它在* put_line()之後被初始化,而不是之前。 –
你可以發表你的意見嗎?我的意思是員工表的內容 – SriniV