PLS-00103:単純な更新ブロックでシンボル「ファイルの終わり」に遭遇しました
質問
次の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
他のヒント
ここにはいくつかの問題があります:
セミコロンがありません(MJBが見たように)
:ID
インバウンド変数を指しますので、あなたのローカル宣言(DECLARE ID NUMBER;
)使用されていません。(明らかに)テーブル内のコラムと同じ名前である変数名を使用しています。あなたの地元を使用しようとする場合
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
所属していません StackOverflow