118 lines
3.2 KiB
Transact-SQL
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
|