我对 Oracle 比较陌生,并且在下面编写了合并语句,当我运行它时,它会生成“ora-00904 错误 vwe_cpr_info.rin_per_id 无效标识符”消息。
我已经检查过, View 和列名称是正确的,我确实有权访问该 View ,并且我没有尝试更新联接中使用的字段。
我已经看了这么久了,现在我想我已经不再看到它了,任何建议都将受到欢迎。它位于 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;
最佳答案
您需要“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;
关于sql - 这个合并语句有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12409861/