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>

Я в значительной степени в недоумении. Это, кажется, довольно простой оператор. Если это помогает кому-либо, у меня был подобный оператор, который выполнил ВСТАВКУ, которая раньше работала, но сегодня давала мне то же сообщение.

5
задан OMG Ponies 19 May 2011 в 05:43
поделиться

2 ответа

Добавьте точку с запятой после , где id =: id

4
ответ дан 14 December 2019 в 18:59
поделиться

Здесь у вас ряд проблем:

  1. Пропущено двоеточие (как заметил MJB)

  2. :ID относится к связанной переменной, поэтому ваше локальное объявление (DECLARE ID NUMBER;) не используется.

  3. Вы используете имя переменной, которое (по всей видимости) совпадает с именем столбца в вашей таблице. Если вы попытаетесь использовать вашу локальную переменную ID, запрос все равно не будет ее использовать, если вы не используете метку блока.

Тем не менее, похоже, что вы в любом случае передаете ID как переменную привязки, поэтому более вероятно, что вам следует просто удалить объявление из блока.

2
ответ дан 14 December 2019 в 18:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: