6

次の Oracle ステートメント:

 DECLARE ID NUMBER;
 BEGIN
  UPDATE myusername.terrainMap 
  SET playerID = :playerID,tileLayout = :tileLayout 
  WHERE ID = :ID
 END;

次のエラーが表示されます。

ORA-06550: line 6, column 15:
PL/SQL: ORA-00933: SQL command not properly ended
ORA-06550: line 3, column 19:
PL/SQL: SQL Statement ignored
ORA-06550: line 6, column 18:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   ( begin case declare end exception exit for goto if loop mod
   null pragma raise return select update while with
   <an identifier> <a double-quoted>

私はかなり途方に暮れています。これはかなり単純なステートメントのようです。少しでも役立つ場合は、以前は機能していた INSERT を実行する同様のステートメントがありましたが、今日は同じメッセージが表示されています。

4

3 に答える 3

5

後にセミコロンを追加where id=:id

于 2010-06-16T19:16:27.313 に答える
3

ここにはいくつかの問題があります。

  1. セミコロンの欠落 (MJB が見たように)

  2. :IDはインバウンド変数を参照しているため、ローカル宣言 ( DECLARE ID NUMBER;) は使用されていません。

  3. (明らかに)テーブルの列と同じ名前の変数名を使用しています。ローカルID変数を使用しようとしても、ブロック ラベルを使用しない限り、クエリはそれを使用しません。

とはいえ、ID をとにかくバインド変数として送信しているように見えるので、ブロックから宣言を削除する必要がある可能性が高くなります。

于 2010-06-17T01:28:58.440 に答える
0

前に加えて、次のような等号演算 ,:, と値の間にスペースを入れないようにする必要があります。

SQL> BEGIN  
2    IF x > y THEN high := x; END IF;  -- correct

3    IF x > y THEN high := x; ENDIF;   -- incorrect

4  END;

5  /

END;
ERROR at line 4:
ORA-06550: line 4, column 4:
PLS-00103: Encountered the symbol ";" when expecting one of the following:
if

詳細については、Web サイトにアクセスして ください。

于 2014-12-05T19:19:04.173 に答える