PLS-00103:在简单更新块中遇到符号“文件结尾”
Posted
技术标签:
【中文标题】PLS-00103:在简单更新块中遇到符号“文件结尾”【英文标题】:PLS-00103: Encountered the symbol "end-of-file" in simple update block 【发布时间】:2011-03-04 15:21:39 【问题描述】:以下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>
我几乎不知所措。这似乎是一个相当简单的陈述。如果有帮助的话,我有一个类似的语句,它执行了一个过去可以工作的 INSERT,但今天一直在给我同样的信息。
【问题讨论】:
你是在 SQLPlus 中运行这个吗? 【参考方案1】:除了前面的你必须防止相等操作之间的空格,:,和值 像这样:
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
【讨论】:
【参考方案2】:这里有很多问题:
缺少分号(如 MJB 所见)
:ID
指的是入站变量,因此您的本地声明 (DECLARE ID NUMBER;
) 未被使用。
您使用的变量名称(显然)与表中的列名称相同。如果您尝试使用本地 ID
变量,除非您使用块标签,否则查询仍不会使用它。
也就是说,您似乎还是将 ID 作为绑定变量发送,因此您更有可能只从块中删除声明。
【讨论】:
这就是为什么我问这是否在 SQLPlus 中。我无法理解他的绑定变量是如何被使用的。而且我认为这可能不是真正他正在运行的 - 这是他认为应该运行的代码的测试版本。【参考方案3】:在where id=:id
后加分号
【讨论】:
@rageingnonsense :没问题。我想知道您是复制/粘贴还是丢失的分号是重新输入代码的产物。以上是关于PLS-00103:在简单更新块中遇到符号“文件结尾”的主要内容,如果未能解决你的问题,请参考以下文章
(PLS-00103:在简单声明游标语句和循环选择数据期间遇到符号“;”)
PLS-00103 在 CASE 中遇到符号“”错误 [关闭]