【问题标题】:merge statement error want to update few tables合并语句错误要更新几个表
【发布时间】:2015-07-20 10:51:47
【问题描述】:

Merge 语句显示错误:

MERGE INTO costing.table1 USING
(SELECT table1.ROWID row_id,
        M.STRPS_MATERIAL AS STRPS_MATERIAL
   FROM costing.table2 p
   JOIN costing.table1 M
     ON p.MATNR = M.MATNR
    AND p.WERKS = M.WERKS
    AND p.BESKZ = M.BESKZ
    AND p.SOBSL = M.SOBSL
  WHERE M.SOBSL = '30') src ON (table1.ROWID = src.row_id )
 WHEN MATCHED THEN
   UPDATE SET M.STRPS_MATERIAL = src.STRPS_MATERIAL;


SQL Error: ORA-00904: "table1"."ROWID": invalid identifier
00904. 00000 -  "%s: invalid identifier"

帮助我更正查询,因为rowid 不是table1 中存在的列。

【问题讨论】:

  • 即使列中没有ROWID,您也可以选择它。我的疑问是这里的costing 是什么,为什么没有在内部查询中提及?你可以试试 M.ROWID 而不是 table1.ROWID。
  • 成本计算是模式...
  • 好的。你的内部查询工作正常吗?
  • M.ROWID !!那里是什么??
  • 表别名。你在 join 语句中给了costing.table1 as M 对吗?

标签: sql oracle merge rowid


【解决方案1】:

您可以尝试以下方法。

MERGE INTO costing.table1 USING
  (SELECT M.ROWID row_id,
  M.STRPS_MATERIAL AS STRPS_MATERIAL
  FROM costing.table2 p
 JOIN costing.table1 M
 ON p.MATNR                                           = M.MATNR
 AND p.WERKS                                          = M.WERKS
 AND p.BESKZ                                          = M.BESKZ
 AND p.SOBSL                                          = M.SOBSL
 WHERE M.SOBSL                                        = '30'
 ) src ON (costing.table1.ROWID = src.row_id )
 WHEN MATCHED THEN
 UPDATE SET M.STRPS_MATERIAL = src.STRPS_MATERIAL;

【讨论】:

  • 我想在 sql server 中上传有空格的数据,但是当我在 oracle 中上传相同的数据时,结果为空。问题是我的程序有条件检查''。所以它不会返回任何结果。当我将我的代码从 sql srver 迁移到 oracle 时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多