77 lines
No EOL
3.7 KiB
Transact-SQL
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 |