【问题标题】:What is wrong with this merge statement?这个合并语句有什么问题?
【发布时间】:2012-09-06 18:04:59
【问题描述】:

我对 oracle 比较陌生,并且编写了下面的合并语句,当我运行它时会产生“ora-00904 错误 vwe_cpr_info.rin_per_id 无效标识符”消息。

我已经检查并且视图和列名是正确的,我确实有权访问该视图,并且我没有尝试更新正在连接中使用的字段。

我已经看了很长时间了,现在我想我已经不再看到它了,任何建议都将受到欢迎。它在 Oracle 9i 环境中。

MERGE INTO vws_art_alert 
USING (
   SELECT rin_date_unreg, rin_per_id
   FROM vwe_cpr_info
   WHERE rin_date_unreg >= '27-SEP-11'
   AND rin_date_unreg <= '13-JAN-12')
ON (vws_art_alert.art_per_id = vwe_cpr_info.rin_per_id
    AND art_alert = 'AL02' 
    AND art_inactive_on IS NULL)
WHEN MATCHED THEN  
UPDATE SET vws_art_alert.art_inactive_on = vwe_cpr_info.rin_date_unreg;

【问题讨论】:

    标签: sql oracle merge oracle9i ora-00904


    【解决方案1】:

    您需要为“using”子句设置别名。试试这个:

    MERGE INTO vws_art_alert 
    USING (
       SELECT rin_date_unreg, rin_per_id
       FROM vwe_cpr_info
       WHERE rin_date_unreg >= '27-SEP-11'
       AND rin_date_unreg <= '13-JAN-12') t
    ON (vws_art_alert.art_per_id = vwe_cpr_info.rin_per_id
        AND art_alert = 'AL02' 
        AND art_inactive_on IS NULL)
    WHEN MATCHED THEN  
    UPDATE SET vws_art_alert.art_inactive_on = t.rin_date_unreg;
    

    【讨论】:

      猜你喜欢
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      相关资源
      最近更新 更多