2009-06-15 6 views
0

L'apprentissage de Curseurs explicites et essayer de créer mon FRST un .:Quel est le problème avec ce curseur

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; 

mais il me donne:

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

Toutes les idées?

+1

Hmmm. Vous pouvez le marquer comme la bonne réponse alors, de sorte que quelqu'un d'autre sait quelle est la résolution du problème :) – Kirtan

Répondre

5

Avez-vous oublié le point-virgule (;) après cette ligne?

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

Essayez de l'ajouter et vérifiez si l'erreur persiste.

EDIT: Oui, il semble que le point-virgule manquant soit le problème. Mise à jour de votre requête Essaye ça.

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

Et encore, deux lignes vers le bas. – UncleO

+0

c'était tout. Merci. -1 pour la copie sans cervelle du code bogué directement à partir du livre. – udit

0

Je crois que dans Oracle vous ne pouvez pas FETCH <cursor> à l'intérieur de la déclaration CURSOR <cursor> IS - vous pourriez peut-être formater votre code plus soigneusement et/ou donner une meilleure explication de texte (idéalement à la fois -!) Pour nous aider à deviner ce que dans [[juron supprimé ]] que vous ESSAYEZ de faire ?!

+0

Formatage effectué. – Kirtan