2013-07-27 55 views
-1

我有LOOP語句與光標和提取,並且工作,但我想要「FOR LOOP」。ORACLE FOOR LOOP與光標

DECLARE 
    emp_rec employees%ROWTYPE; 
    CURSOR Cur_emp IS 
    SELECT * 
     FROM employees 
     order by employees.last_name asc; 
BEGIN 
    OPEN Cur_emp; 
    LOOP 
     FETCH Cur_emp INTO emp_rec; 
     exit when Cur_emp%notfound; 
     dbms_output.put_line(‘Employee Name–>’|| emp_rec.LAST_NAME); 
    END LOOP; 
    CLOSE Cur_emp; 
END; 

我想這樣的:

DECLARE 
    emp_rec employees%ROWTYPE; 
    CURSOR Cur_emp IS 
    SELECT * 
     FROM employees 
     order by employees.last_name asc; 
BEGIN 
    FOR item IN Cur_emp 
    LOOP 
    FETCH Cur_emp INTO emp_rec; 
    exit when Cur_emp%notfound; 
    dbms_output.put_line(‘Employee Name–>’|| emp_rec.LAST_NAME); 
    END LOOP; 
END; 
/

這並不是因爲FETCH Cur_emp INTO emp_rec INVALID CURSOR ORA-01001

回答

1

作品取下FETCHEXIT WHEN,並替換項目EMP_REC參考,像這樣:

DECLARE 
CURSOR Cur_emp IS SELECT * FROM employees order by employees.last_name asc; 
BEGIN 
FOR item IN Cur_emp 
LOOP 
dbms_output.put_line(‘Employee Name–>’|| item.LAST_NAME); 
END LOOP; 
END; 
/
+0

我知道它會起作用。我在http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/static.htm#i45320 – user2377214

+0

找到答案謝謝,但你不問我的問題。無論如何,我給你加 – user2377214