2013-07-27 57 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