【问题标题】:Caused by: java.sql.BatchUpdateException: ORA-00971: missing SET keyword引起:java.sql.BatchUpdateException:ORA-00971:缺少 SET 关键字
【发布时间】:2021-03-30 12:45:56
【问题描述】:

我在运行以下查询时遇到 ORA-00971: missing SET keyword 错误,

UPDATE FL_NOTIFICATION@notify_dblink FL_NOTIFICATION@notify_dblink
SET
FL_NOTIFICATION@notify_dblink.Name = :1 ,
FL_NOTIFICATION@notify_dblink.Description = :2
WHERE FL_NOTIFICATION@notify_dblink.Id =:3;

尽管使用 SET 关键字查询看起来不错,但它会引发上述错误。 但, 如果我从查询中删除别名,它会完美执行。 谁能解释一下,为什么在上述情况下存在别名时会发生这种行为?

【问题讨论】:

  • 您似乎将 FL_NOTIFICATION@notify_dblink 别名为自身 - 有什么原因吗?顺便说一句,这是 oracle 而不是 mysql - 如果你想吸引 oracle 用户更改标签。
  • 在一个命名空间中,没有两个对象可以具有相同的名称。 - docs.oracle.com/database/121/SQLRF/…
  • >您似乎将 FL_NOTIFICATION@notify_dblink 别名为自身 - 有什么原因吗?如果查询不包含别名,那么我试图将别名指定为表名。因此,在其中一种情况下,别名不存在,它正在将表名视为别名

标签: sql oracle


【解决方案1】:

抱歉,查询看起来不太好 - 您在 "SET" 之前有两个表名

UPDATE FL_NOTIFICATION@notify_dblink FL_NOTIFICATION@notify_dblink

删除重复的表名使其工作:

UPDATE FL_NOTIFICATION@notify_dblink 

【讨论】:

  • 在我的情况下,如果没有明确指定别名,我将别名指定为表名。 UPDATE查询中将表名指定为别名有错吗?
  • @vivekhegde 您需要将“@”替换为其他内容。比如说,使用“UPDATE FL_NOTIFICATION@notify_dblink FL_NOTIFICATION_notify_dblink”
  • 感谢您的建议。效果很好。
猜你喜欢
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
相关资源
最近更新 更多