2013-07-27 3 views
-1

У меня есть инструкция 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

Снимите FETCH и EXIT 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

Смежные вопросы