Следующий оператор 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>
Я в значительной степени в недоумении. Это, кажется, довольно простой оператор. Если это помогает кому-либо, у меня был подобный оператор, который выполнил ВСТАВКУ, которая раньше работала, но сегодня давала мне то же сообщение.
Здесь у вас ряд проблем:
Пропущено двоеточие (как заметил MJB)
:ID
относится к связанной переменной, поэтому ваше локальное объявление (DECLARE ID NUMBER;
) не используется.
Вы используете имя переменной, которое (по всей видимости) совпадает с именем столбца в вашей таблице. Если вы попытаетесь использовать вашу локальную переменную ID
, запрос все равно не будет ее использовать, если вы не используете метку блока.
Тем не менее, похоже, что вы в любом случае передаете ID как переменную привязки, поэтому более вероятно, что вам следует просто удалить объявление из блока.