PLS-00103:単純な更新ブロックでシンボル「ファイルの終わり」に遭遇しました

StackOverflow https://stackoverflow.com/questions/3056410

質問

次の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>

私はほとんど途方に暮れています。これはかなり単純な声明のようです。それが役立つなら、私は仕事をしていた挿入物を実行した同様の声明を持っていましたが、今日は同じメッセージを与えています。

役に立ちましたか?

解決

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

他のヒント

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

  1. セミコロンがありません(MJBが見たように)

  2. :ID インバウンド変数を指しますので、あなたのローカル宣言(DECLARE ID NUMBER;)使用されていません。

  3. (明らかに)テーブル内のコラムと同じ名前である変数名を使用しています。あなたの地元を使用しようとする場合 ID 変数、クエリはブロックラベルを使用しない限り、それを使用しません。

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

以前に加えて、等しい操作と次のような値の間のスペースを防ぐ必要があります。

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

続きを読むにはウェブサイトにアクセスしてください。https://docs.oracle.com/cd/b28359_01/appdev.111/b28370/fundamentals.htm#lnpls002

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top