Что не так с этим курсором - PullRequest
0 голосов
/ 15 июня 2009

Изучение явных курсоров и попытка создать мой первый.

SET SERVEROUTPUT ON
DECLARE
 v_ename EMP.FIRST_NAME%TYPE;
 v_salary EMP.SALARY%TYPE;
 CURSOR c_emp IS SELECT first_name, salary FROM emp;
BEGIN
  OPEN c_emp;
  FETCH c_emp INTO v_ename, v_salary;
  DBMS_OUTPUT.PUT_LINE('Employee Details ' || v_ename || ' ' || v_salary)

  FETCH c_emp INTO v_ename, v_salary;
  DBMS_OUTPUT.PUT_LINE('Employee Details ' || v_ename || ' ' || v_salary)

  CLOSE c_emp;
END;

но это дает мне:

FETCH c_emp INTO v_ename, v_salary;
  *
ERROR at line 10:
ORA-06550: line 10, column 3:
PLS-00103: Encountered the symbol "FETCH" when expecting one of the following:
:= . ( % ;
The symbol ";" was substituted for "FETCH" to continue.
ORA-06550: line 13, column 3:
PLS-00103: Encountered the symbol "CLOSE" when expecting one of the following:
:= . ( % ;

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 15 июня 2009

Вы забыли точку с запятой (;) после этой строки?

Line #9: DBMS_OUTPUT.PUT_LINE('Employee Details ' || v_ename || ' ' || v_salary);

Попробуйте добавить его и посмотрите, сохраняется ли ошибка.

РЕДАКТИРОВАТЬ: Да, кажется, проблема в пропущенной точке с запятой. Обновил ваш запрос. Попробуйте это.

SET SERVEROUTPUT ON
DECLARE
    v_ename EMP.FIRST_NAME%TYPE;
    v_salary EMP.SALARY%TYPE;
CURSOR c_emp IS SELECT first_name, salary FROM emp;
BEGIN
        OPEN c_emp;
        FETCH c_emp INTO v_ename, v_salary;
        DBMS_OUTPUT.PUT_LINE('Employee Details ' || v_ename || ' ' || v_salary);
        FETCH c_emp INTO v_ename, v_salary;
        DBMS_OUTPUT.PUT_LINE('Employee Details ' || v_ename || ' ' || v_salary);
        CLOSE c_emp;
END;
0 голосов
/ 15 июня 2009

Я считаю, что в Oracle вы не можете FETCH <cursor> внутри оператора CURSOR <cursor> IS - возможно, вы могли бы отформатировать свой код более аккуратно и / или дать более точное текстовое объяснение (в идеале оба! -), чтобы помочь нам предсказать, что в [ [выговор удален]] вы пытаетесь сделать ?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...