kreta/Kreta.DataAccess.Migrations/DBScripts/Database/uspInsertOptionsIntoSystemSetting.sql
2024-03-13 00:33:46 +01:00

118 lines
3.2 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS dbo.uspInsertOptionsIntoSystemSetting
GO
CREATE PROCEDURE dbo.uspInsertOptionsIntoSystemSetting
@pPozicio int
,@pBeallitasTipus int
,@pBeszurandok nvarchar(max)
,@pTanevId int = NULL
,@pDebugInfo bit = 0
AS
BEGIN
SET NOCOUNT ON;
DECLARE @tanevId int
CREATE TABLE #options ([key] int, [value] nvarchar(max), [type] int)
CREATE TABLE #newoptions ([key] int, [value] nvarchar(max), [type] int)
INSERT INTO #newoptions
SElECT * from OPENJSON(@pBeszurandok, '$')
IF @pTanevId IS NOT NULL
BEGIN
DECLARE tanevCursor CURSOR
FOR SELECT ID FROM T_TANEV WHERE ID = @pTanevId AND TOROLT = 'F'
END
ELSE
BEGIN
DECLARE tanevCursor CURSOR
FOR SELECT ID FROM T_TANEV WHERE TOROLT = 'F'
END
OPEN tanevCursor
FETCH NEXT FROM tanevCursor INTO @tanevId
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @val nvarchar(max) = (SELECT C_ALAPERTEK FROM T_RENDSZERBEALLITAS WHERE C_TANEVID = @tanevId AND C_BEALLITASTIPUS = @pBeallitasTipus AND TOROLT = 'F')
DECLARE @result nvarchar(MAX)
INSERT INTO #options
SELECT * FROM OPENJSON(@val, '$.Options')
SET @result = JSON_MODIFY(@val, '$.Options', JSON_QUERY('[]'))
SELECT @result = JSON_MODIFY(@result, 'append $.Options', JSON_QUERY([value]))
FROM #options
WHERE [key]<@pPozicio
SELECT @result = JSON_MODIFY(@result, 'append $.Options', JSON_QUERY(n.[value]))
FROM #newoptions n
LEFT JOIN #options o ON o.value = n.value
WHERE o.[key] IS NULL
SELECT @result = JSON_MODIFY(@result, 'append $.Options', JSON_QUERY([value]))
FROM #options
WHERE [key]>=@pPozicio
IF @pDebugInfo = 1
BEGIN
SELECT '----------- Alapérték: ' + CONVERT(nvarchar(10), @tanevId)
SELECT @val
SELECT @result
END
UPDATE T_RENDSZERBEALLITAS
SET C_ALAPERTEK=@result
,SERIAL = SERIAL + 1
,LASTCHANGED = GETDATE()
,MODIFIER = 0
WHERE C_TANEVID = @tanevId
AND C_BEALLITASTIPUS = @pBeallitasTipus
AND TOROLT = 'F'
TRUNCATE TABLE #options
SET @val = (SELECT C_ERTEK FROM T_RENDSZERBEALLITAS WHERE C_TANEVID = @tanevId AND C_BEALLITASTIPUS = @pBeallitasTipus AND TOROLT = 'F')
INSERT INTO #options
SELECT * FROM OPENJSON(@val, '$.Options')
SET @result = JSON_MODIFY(@val, '$.Options', JSON_QUERY('[]'))
SELECT @result = JSON_MODIFY(@result, 'append $.Options', JSON_QUERY([value]))
FROM #options
WHERE [key]<@pPozicio
SELECT @result = JSON_MODIFY(@result, 'append $.Options', JSON_QUERY(n.[value]))
FROM #newoptions n
LEFT JOIN #options o ON o.value = n.value
WHERE o.[key] IS NULL
SELECT @result = JSON_MODIFY(@result, 'append $.Options', JSON_QUERY([value]))
FROM #options
WHERE [key]>=@pPozicio
IF @pDebugInfo = 1
BEGIN
SELECT '----------- Érték: ' + CONVERT(nvarchar(10), @tanevId)
SELECT @val
SELECT @result
END
UPDATE T_RENDSZERBEALLITAS
SET C_ERTEK=@result
,SERIAL = SERIAL + 1
,LASTCHANGED = GETDATE()
,MODIFIER = 0
WHERE C_TANEVID = @tanevId
AND C_BEALLITASTIPUS = @pBeallitasTipus
AND TOROLT = 'F'
TRUNCATE TABLE #options
FETCH NEXT FROM tanevCursor INTO @tanevId
END
CLOSE tanevCursor
DEALLOCATE tanevCursor
END
GO