Home » SQL & PL/SQL » SQL & PL/SQL » Merge statement (11g ,window7)
Merge statement [message #613066] |
Tue, 29 April 2014 06:34 |
|
maheshkumar93
Messages: 2 Registered: April 2014
|
Junior Member |
|
|
while executing merge statement getting below exception.
ORA-30926: unable to get a stable set of rows in the source tables
Merge state ment:---
MERGE INTO CUSTOMER_DIM CD USING
(SELECT Distinct
-1 CUSTOMER_DIM_ID_SEQ ,
NVL( MCID, '$NULL') MCID ,
CUSTOMER_DIM_STAGE.CUST_TYPE CUST_TYPE ,
CUSTOMER_DIM_STAGE.CUST_ID CUST_ID ,
Upper(PARENT_CUSTOMER_NAME) Parent_Customer_Name,
NULL Customer_Name ,
SERVICE_PROVIDER_TYP ,
TREATMENT_DAY ,
NULL PARENT_CUST_DIM_ID ,
DeCode(2, 2,
Get_Collector_Cuid(CUST_TYPE, CUST_ID), COLLECTOR_CUID)
cCOLLECTOR_CUID ,
Trunc( SYSDATE) CHANGE_DATE ,
'RECORD UPDATED' CHANGE_NOTE_TXT ,
CUSTOMER_DIM_STAGE.DATA_PROCESS_SYS_NM ,
CUSTOMER_DIM_STAGE.BILLING_SOURCE_SYS_NM ,
2 SECURITY_GROUP_ID ,
'NEW' LAST_UPDATE_STATUS_CD ,
103677 BASE_PROCESS_CONTROL_ID
From CDB_STAGE.CUSTOMER_DIM_STAGE
Where CUSTOMER_DIM_STAGE.PROCESS_CONTROL_ID = 111275
and CUST_TYPE is NOT NULL
and CUST_ID is NOT NULL
and MCID <> 'UNKNOWN'
) CDS
ON ( NVL( CD.MCID,'$NULL') = NVL( CDS.MCID ,'$NULL')
and CD.CUST_TYPE = CDS.Cust_Type
and CD.CUST_ID = CDS.Cust_Id )
WHEN MATCHED
THEN
UPDATE SET CD.PARENT_CUSTOMER_NAME = CDS.Parent_Customer_Name ,
CD.SERVICE_PROVIDER_TYP = CDS.SERVICE_PROVIDER_TYP ,
--CD.TREATMENT_DAY = CDS.TREATMENT_DAY ,
CD.COLLECTOR_CUID = CDS.cCOLLECTOR_CUID ,
CD.SECURITY_GROUP_ID = CDS.SECURITY_GROUP_ID ,
CD.CHANGE_DATE = trunc (SYSDATE ) ,
CD.LAST_UPDATE_STATUS_CD = 'CHG' ,
CD.CHANGE_NOTE_TXT = 'RECORD UPDATED' ,
CD.BASE_PROCESS_CONTROL_ID = BASE_PROCESS_CONTROL_ID
WHEN NOT MATCHED
THEN INSERT
(
CD.CUSTOMER_DIM_ID ,
CD.DATA_PROCESS_SYS_NM ,
CD.BILLING_SOURCE_SYS_NM ,
CD.MCID ,
CD.CUST_TYPE ,
CD.CUST_ID ,
CD.PARENT_CUSTOMER_NAME ,
CD.SERVICE_PROVIDER_TYP ,
CD.CUSTOMER_NAME ,
CD.TREATMENT_DAY ,
CD.SECURITY_GROUP_ID ,
CD.PARENT_CUST_DIM_ID ,
CD.COLLECTOR_CUID ,
CD.CHANGE_DATE ,
CD.LAST_UPDATE_STATUS_CD ,
CD.CHANGE_NOTE_TXT ,
CD.BASE_PROCESS_CONTROL_ID
)
VALUES
(
Cust_Dim_Seq.NextVal , --CDS.CUSTOMER_DIM_ID_SEQ ,
CDS.DATA_PROCESS_SYS_NM ,
CDS.BILLING_SOURCE_SYS_NM ,
CDS.MCID ,
CDS.CUST_TYPE ,
CDS.CUST_ID ,
CDS.PARENT_CUSTOMER_NAME ,
CDS.SERVICE_PROVIDER_TYP ,
CDS.CUSTOMER_NAME ,
CDS.TREATMENT_DAY ,
CDS.Security_Group_id ,
CDS.PARENT_CUST_DIM_ID ,
CDS.cCOLLECTOR_CUID ,
CDS.CHANGE_DATE ,
CDS.LAST_UPDATE_STATUS_CD ,
CDS.CHANGE_NOTE_TXT ,
CDS.BASE_PROCESS_CONTROL_ID
) ;
please guide me where is the mistake........
[Edit MC: add code tags, do it yourself next time]
[Updated on: Tue, 29 April 2014 06:40] by Moderator Report message to a moderator
|
|
|
|
|
Re: Merge statement [message #613081 is a reply to message #613069] |
Tue, 29 April 2014 08:04 |
cookiemonster
Messages: 13920 Registered: September 2008 Location: Rainy Manchester
|
Senior Member |
|
|
That doesn't mean Michel's statement is wrong.
The distinct returns multiple rows with the same cust_type, cust_id and mcid.
Since the distinct applies to far more columns than just those three it should be obvious that it won't prevent the error.
|
|
|
Goto Forum:
Current Time: Fri Apr 19 18:38:47 CDT 2024
|