Pergunta

A seguinte declaração Oracle:

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

Me dá o seguinte erro:

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>

Estou praticamente perdido. Esta parece ser uma afirmação bastante simples. Se ajudar, eu tive uma declaração semelhante que realizava uma inserção que costumava funcionar, mas hoje está me dando a mesma mensagem.

Foi útil?

Solução

Adicione um semi-Colon depois where id=:id

Outras dicas

Você tem vários problemas aqui:

  1. Falta Semi-Colon (como serra MJB)

  2. :ID refere-se a uma variável interna, então sua declaração local (DECLARE ID NUMBER;) não está sendo usado.

  3. Você está usando um nome de variável que (aparentemente) é o mesmo nome que um colum na sua tabela. Se você tentar usar seu local ID Variável, a consulta ainda não a usará, a menos que você use um rótulo de bloco.

Dito isto, parece que você está enviando ID como uma variável de ligação de qualquer maneira, por isso é mais provável que você apenas remova a declaração do bloco.

Além do anterior, você deve evitar espaços entre operação igual, e o valor como este:

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

Visite o site para ler mais ....https://docs.oracle.com/cd/b28359_01/appdev.111/b28370/fundamentals.htm#lnpls002

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top