我对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;
答案 0 :(得分:3)
您需要“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;