我需要基于oracle中两个表的内部连接来更新列。我使用合并,因为内部联接在更新中不支持。
查询:
MERGE INTO FAC.CMC_PRSQ_SITE_QA PRSQ
USING(
SELECT PRPR_ID, ADDRESS_TYPE, PRAD_EFF_DT, PRAD_TERM_DT
FROM FSG_WRK.FSG_PRAD_PRSQ_TEMP
) TEMP
ON (TEMP.PRPR_ID = PRSQ.PRPR_ID
AND TEMP.ADDRESS_TYPE = PRSQ.PRAD_TYPE
AND TEMP.PRAD_EFF_DT = PRSQ.PRAD_EFF_DT)
WHEN MATCHED THEN UPDATE
SET PRSQ.PRSQ_NEXT_VER_DT = TEMP.PRAD_TERM_DT
WHERE TEMP.PRAD_TERM_DT > PRSQ.PRSQ_LAST_VER_DT ;但在错误之下:
ORA-30926: unable to get a stable set of rows in the source tables
ORA-06512: at line 2
30926. 00000 - "unable to get a stable set of rows in the source tables"
*Cause: A stable set of rows could not be got because of large dml
activity or a non-deterministic where clause.
*Action: Remove any non-deterministic where clauses and reissue the dml.此外,请让我知道是否有任何其他选项来重写这个查询。
发布于 2019-01-13 04:12:24
源查询(TEMP)是否返回与合并条件相匹配的目标(PRSQ)中一行的多个实例?当源包含需要在目标中更新的一行的多个实例时,通常会看到这种类型的错误。如果需要,则需要调整源查询或合并条件,以避免尝试将源中的多个行合并到目标的同一行。
https://stackoverflow.com/questions/54149294
复制相似问题