SQL 命令未在更新语句中正确结束 [重复]

Posted

技术标签:

【中文标题】SQL 命令未在更新语句中正确结束 [重复]【英文标题】:SQL Command not properly ended in update statement [duplicate] 【发布时间】:2014-09-27 12:37:57 【问题描述】:

有 2 个表,INVN_SBSINVC_ITEM。 希望根据 if INVN_SBS.ITEM_SIDINVNSBS.ITEM 匹配和 INVN_SBS.DCS_CODE = 'SMP' 的条件将表中的一个字段设置为 active = '0'

到目前为止我有:

UPDATE INVN_SBS 
SET ACTIVE='0' 
FROM 
   INVN_SBS,
   INVC_ITEM 
WHERE 
       INVN_SBS.ITEM_SID = INVC_ITEM.ITEM_SID
   and INVN_SBS.DCS_CODE='SMP'

但是运行时我得到:

ORA-00933:SQL 命令未正确结束。

我能够运行一个选择语句来向我显示符合我的条件的项目,但更新给我带来了麻烦。

【问题讨论】:

Oracle 不支持update 中的from 子句。使用merge 或相关子查询。 【参考方案1】:

这是一种可能的解决方案:

UPDATE INVN_SBS 
SET ACTIVE='0' 
where
  DCS_CODE='SMP' and
  ITEM_SID in (
    select ITEM_SID
    from INVC_ITEM
  )

如果您的主键支持它,这也应该有效:

UPDATE (
  select INVN_SBS.ACTIVE
  FROM 
    INVN_SBS,
    INVC_ITEM 
  WHERE 
    INVN_SBS.ITEM_SID = INVC_ITEM.ITEM_SID
    and INVN_SBS.DCS_CODE='SMP'
)
SET ACTIVE='0' 

如果您的主键不支持第二种方法,它会在编译时通知您。

【讨论】:

以上是关于SQL 命令未在更新语句中正确结束 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE:错误错误(6,3):PL/SQL:SQL 语句被忽略和错误(8,3):PL/SQL:ORA-00933:SQL 命令未在过程中正确结束

试图在我的 SQL 表中插入多行。总是显示 SQL 命令未正确结束 [重复]

ORA-00933: SQL 命令未在存储过程中正确结束

如何解决 ORA-00933:SQL 命令未在 oracle 中正确结束?

未正确结束 sql 查询 [重复]

我将如何修复这些“ORA-00933:SQL 命令未正确结束”“ORA-00923:未在预期位置找到 FROM 关键字”错误?