0

Explicit Cursors について学び、最初のものを作成しようとしています。:

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

何か案は ?

4

2 に答える 2

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;
于 2009-06-15T05:25:10.513 に答える
0

オラクルFETCH <cursor>では、ステートメントの中に入れることはできないCURSOR <cursor> ISと思います。おそらく、コードをよりきちんとフォーマットしたり、より良いテキスト説明を提供したり (理想的には両方!-) して、[[罵倒削除]] で何をしようとしているのかを推測するのに役立てることができます。する?!

于 2009-06-15T05:19:12.090 に答える