kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20180528134636_OM_790/sp_FollowUpDictionaryItemBase.sql
2024-03-13 00:33:46 +01:00

77 lines
No EOL
3.7 KiB
Transact-SQL

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