Oracle合并声明ORA-30926错误

时间:2016-09-20 06:35:21

标签: sql oracle rdbms

请帮我纠正以下错误

    MERGE INTO TBL_SERIAL_NUMBER_MASTER A
USING
( SELECT DISTINCT (SERIAL_NUMBER), FNN, HOST_NAME   FROM TBL_INVENTORY 
WHERE SERIAL_NUMBER IS NOT NULL) B
ON (A.SERIAL_NUMBER = B.SERIAL_NUMBER)
WHEN MATCHED THEN
 UPDATE SET 
  A.DEVICE_FNN = B.FNN,
  A.VALID = 'Valid',
  A.HOST_NAME = B.HOST_NAME,
  A.CHASSIS_MODULE = 'Chassis',
  A.SN_SUPDATE_SOURCE = 'Inventory Master',
  A.HOST_NAME_UPDATE_SOURCE = 'Inventory Master'
WHEN NOT MATCHED THEN
  INSERT (A.SERIAL_NUMBER, A.DEVICE_FNN, A.VALID, A.HOST_NAME, A.CHASSIS_MODULE, A.SN_SUPDATE_SOURCE, A.HOST_NAME_UPDATE_SOURCE)
  VALUES (B.SERIAL_NUMBER, B.FNN, 'Valid', B.HOST_NAME, 'Chassis', 'Inventory Master', 'Inventory Master'); 
COMMIT;

错误报告 -

  

SQL错误:ORA-30926:无法在源中获得稳定的行集   表   30926. 00000 - “无法在源表中获得稳定的行集”

     

原因:由于dml较大,无法获得稳定的行集              活动或非确定性的where子句。

     

操作:删除所有非确定性where子句并重新发出dml。合并了54,149行。

0 个答案:

没有答案