IF OBJECT_ID('sp_FollowUpDictionaryItemBase') IS NOT NULL BEGIN DROP PROCEDURE sp_FollowUpDictionaryItemBase END GO CREATE PROCEDURE sp_FollowUpDictionaryItemBase @pItemId int ,@pCurrentTanevId int ,@pNextTanevId int ,@pIntezmenyId int AS BEGIN DECLARE @typeName nvarchar(64) ,@typeSQL nvarchar(max) SELECT TOP 1 @typeName=C_TYPE FROM T_DICTIONARYITEMBASE_OSSZES db WHERE db.ID=@pItemId AND db.C_INTEZMENYID=@pIntezmenyId AND db.C_TANEVID=@pCurrentTanevId --Item Base Merge START-- MERGE INTO T_DICTIONARYITEMBASE_OSSZES AS trg USING (SELECT TOP 1 * FROM T_DICTIONARYITEMBASE_OSSZES db WHERE db.ID=@pItemId AND db.C_INTEZMENYID=@pIntezmenyId AND db.C_TANEVID=@pCurrentTanevId) AS src ON trg.ELOZOTANEVIREKORDID=src.ID AND trg.C_TANEVID= @pNextTanevId AND src.C_TANEVID=@pCurrentTanevId AND trg.C_INTEZMENYID=src.C_INTEZMENYID WHEN MATCHED THEN UPDATE SET C_VALUE=src.c_VALUE ,C_NAME=src.C_NAME ,C_NAME_1=src.C_NAME_1 ,C_NAME_2=src.C_NAME_2 ,C_NAME_3=src.C_NAME_3 ,C_NAME_4=src.C_NAME_4 ,C_VISIBLE=src.C_VISIBLE ,C_CODE=src.C_CODE ,C_TYPE=src.C_TYPE ,C_PROTECTED=src.C_PROTECTED ,C_COLOR=src.C_COLOR ,C_ORDER=src.C_ORDER ,C_BGCOLOR=src.C_BGCOLOR ,C_DESCRIPTION=src.C_DESCRIPTION ,C_ISACTIVE=src.C_ISACTIVE ,C_SHORTNAME=src.C_SHORTNAME ,C_DICTIONARYTYPEID=src.C_DICTIONARYTYPEID ,C_INTEZMENYID=src.C_INTEZMENYID ,C_TANEVID=@pNextTanevId ,TOROLT=src.TOROLT ,SERIAL=trg.SERIAL+1 ,LASTCHANGED=GETDATE() ,MODIFIER=src.MODIFIER ,CREATOR=src.CREATOR ,NNID=src.NNID WHEN NOT MATCHED BY target THEN INSERT(C_VALUE,C_NAME,C_NAME_1,C_NAME_2,C_NAME_3,C_NAME_4,C_VISIBLE,C_CODE,C_TYPE,C_PROTECTED,C_COLOR,C_ORDER,C_BGCOLOR,C_DESCRIPTION,C_ISACTIVE,C_SHORTNAME,C_DICTIONARYTYPEID,C_INTEZMENYID,C_TANEVID,TOROLT,SERIAL,LASTCHANGED,CREATED,MODIFIER,CREATOR,ELOZOTANEVIREKORDID,NNID) VALUES(C_VALUE,C_NAME,C_NAME_1,C_NAME_2,C_NAME_3,C_NAME_4,C_VISIBLE,C_CODE,C_TYPE,C_PROTECTED,C_COLOR,C_ORDER,C_BGCOLOR,C_DESCRIPTION,C_ISACTIVE,C_SHORTNAME,C_DICTIONARYTYPEID,C_INTEZMENYID,@pNextTanevId,TOROLT,0,GETDATE(),GETDATE(),MODIFIER,CREATOR,ID,NNID); --Item Base Merge END-- --Item Type Merge Start-- DECLARE @inserted int SET @inserted=(SELECT TOP 1 ID FROM T_DICTIONARYITEMBASE_OSSZES WHERE ELOZOTANEVIREKORDID=@pItemId AND C_INTEZMENYID=@pIntezmenyId AND C_TANEVID=@pNextTanevId) SET @typeSQL=' MERGE INTO T_'+@typeName+'_OSSZES AS trg USING (SELECT TOP 1 * FROM T_'+@typeName+'_OSSZES type WHERE type.ID='+cast(@pItemId as varchar)+' AND type.C_ALINTEZMENYID='+cast(@pIntezmenyId as varchar)+' AND type.C_ALTANEVID='+cast(@pCurrentTanevId as varchar)+') AS src ON trg.ELOZOTANEVIREKORDID=src.ID AND trg.C_ALTANEVID='+cast(@pNextTanevId as varchar)+' AND src.C_ALTANEVID='+cast(@pCurrentTanevId as varchar)+' AND trg.C_ALINTEZMENYID=src.C_ALINTEZMENYID WHEN MATCHED THEN UPDATE SET TOROLT=src.TOROLT ,LASTCHANGED=GETDATE() ,SERIAL=trg.SERIAL+1 WHEN NOT MATCHED BY target THEN INSERT(ID,C_ALINTEZMENYID,C_ALTANEVID,TOROLT,SERIAL,LASTCHANGED,CREATED,MODIFIER,CREATOR,NNID,ELOZOTANEVIREKORDIDA,ELOZOTANEVIREKORDID) VALUES('+CAST(@inserted as varchar)+',C_ALINTEZMENYID,'+cast(@pNextTanevId as varchar)+',TOROLT,0,GETDATE(),GETDATE(),MODIFIER,CREATOR,NNID,ID,ID);' exec sp_executesql @typeSQL --Item Type Merge End-- END