6

以下 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,但今天一直在给我同样的信息。

4

3 回答 3

5

后面加分号where id=:id

于 2010-06-16T19:16:27.313 回答
3

你在这里有很多问题:

  1. 缺少分号(如 MJB 所见)

  2. :ID指的是一个入站变量,所以你的本地声明 ( DECLARE ID NUMBER;) 没有被使用。

  3. 您使用的变量名称(显然)与表中的列名称相同。如果您尝试使用本地ID变量,除非您使用块标签,否则查询仍不会使用它。

也就是说,看起来您无论如何都将 ID 作为绑定变量发送,因此您更有可能只从块中删除声明。

于 2010-06-17T01:28:58.440 回答
0

除了前面你必须防止相等操作之间的空格,:,和这样的值:

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

于 2014-12-05T19:19:04.173 回答