2009-06-15 3 views
0

は明示カーソル学ぶと私FRST 1:いただきまし

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

任意のアイデア?

+1

Hmmm。あなたはそれを正しい答えとしてマークすることができますので、他の人が解決策が問題になっていることを知ることができます:) – Kirtan

答えて

5

この行の後ろにセミコロン(;)を忘れていませんか?

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

もう一度、2行下。 – UncleO

+0

それでした。ありがとう。バグのコードを本から直接に無人でコピーする場合は-1です。 – udit

0

私はオラクルにあなたがいないFETCH <cursor>CURSOR <cursor> IS文の内側ことができると信じている - おそらくあなたはもっときれいにあなたのコードをフォーマットおよび/またはより良いテキストの説明(理想的には両方を! - )与えることができる私たちは[[虚辞削除に何を占う手助けするの]]あなたはやろうとしているのですか?

+0

フォーマットが完了しました。 – Kirtan

関連する問題