udit
udit

Reputation: 2783

Whats wrong with this Cursor

Learning about Explicit Cursors and trying to create my frst one.:

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;

but it gives me :

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:
:= . ( % ;

Any ideas ?

Upvotes: 0

Views: 3366

Answers (2)

Alex Martelli
Alex Martelli

Reputation: 881555

I believe that in Oracle you cannot FETCH <cursor> inside of the CURSOR <cursor> IS statement -- perhaps you could format your code more neatly and/or give better text explanation (ideally both!-) to help us divine what in [[expletive deleted]] you're TRYING to do?!

Upvotes: 0

Kirtan
Kirtan

Reputation: 21695

Have you forgotten the semicolon (;) after this line?

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

Try adding it and see if the error still persists.

EDIT: Yep, it seems the missing semicolon is the problem. Updated your query. Try this.

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;

Upvotes: 4

Related Questions