PLS-00103: Encontrou o símbolo "Fim do arquivo" no simples bloco de atualização
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.
Solução
Adicione um semi-Colon depois where id=:id
Outras dicas
Você tem vários problemas aqui:
Falta Semi-Colon (como serra MJB)
:ID
refere-se a uma variável interna, então sua declaração local (DECLARE ID NUMBER;
) não está sendo usado.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