init
This commit is contained in:
@@ -0,0 +1,260 @@
|
||||
-- =============================================
|
||||
-- Description: <Dinamikus import>
|
||||
-- =============================================
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('[dbo].[sp_DynamicImport]') IS NOT NULL
|
||||
BEGIN
|
||||
DROP PROCEDURE [dbo].[sp_DynamicImport]
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE [dbo].[sp_DynamicImport]
|
||||
@pImportJson NVARCHAR(MAX)
|
||||
,@pIsTorles BIT
|
||||
,@pInsertAlways BIT = 0
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE
|
||||
@sqlCommand NVARCHAR(MAX)
|
||||
|
||||
,@lastChangedDateTimeCommand NVARCHAR(300)
|
||||
,@modifierIdCommand NVARCHAR(300)
|
||||
,@lastChangedDateTime DATETIME
|
||||
,@modifierId INT
|
||||
|
||||
,@openJsonWithCommand NVARCHAR(MAX)
|
||||
,@rootElementJsonWithCommand NVARCHAR(300)
|
||||
,@columnNameFromJsonCommand NVARCHAR(300)
|
||||
|
||||
,@columnListForInsert NVARCHAR(MAX)
|
||||
,@columnListForUpdate NVARCHAR(MAX)
|
||||
|
||||
,@sqlInsertCommand NVARCHAR(MAX)
|
||||
,@sqlUpdateCommand NVARCHAR(MAX)
|
||||
,@sqlDeleteCommand NVARCHAR(MAX)
|
||||
|
||||
,@rootElement NVARCHAR(100)
|
||||
,@tableNameFromJson NVARCHAR(50)
|
||||
,@columnCount INT
|
||||
|
||||
,@openJsonPath NVARCHAR(300)
|
||||
|
||||
DECLARE @TableName TABLE
|
||||
(
|
||||
TableName NVARCHAR(50)
|
||||
)
|
||||
|
||||
DECLARE @ColumnTable TABLE
|
||||
(
|
||||
ColumnName NVARCHAR(50)
|
||||
)
|
||||
|
||||
DECLARE @ColumnDataTable TABLE
|
||||
(
|
||||
ColumnName NVARCHAR(50)
|
||||
,ColumnType NVARCHAR(50)
|
||||
,MaxLengthValue NVARCHAR(50)
|
||||
,NumericPrecision NVARCHAR(50)
|
||||
,NumericScale NVARCHAR(50)
|
||||
,IsNullable NVARCHAR(50)
|
||||
)
|
||||
|
||||
-- A Json Root elemének kiszedése változóba @rootElement
|
||||
SELECT
|
||||
@rootElement = [key]
|
||||
FROM
|
||||
OPENJSON(@pImportJson, N'strict $')
|
||||
|
||||
--Az importálandó táblanevének kiszedése JSON-ből (rootelem utáni elem) @tableNameFromJson
|
||||
SET @rootElementJsonWithCommand =
|
||||
'SELECT
|
||||
@tableNameFromJson = [key]
|
||||
FROM
|
||||
OPENJSON(@pImportJson, N''lax $.' + @rootElement + ''')
|
||||
SELECT
|
||||
@tableNameFromJson '
|
||||
|
||||
INSERT INTO @TableName
|
||||
EXEC sp_executesql @rootElementJsonWithCommand, N'@pImportJson NVARCHAR(MAX), @tableNameFromJson NVARCHAR(50)', @pImportJson, @tableNameFromJson
|
||||
|
||||
SELECT @tableNameFromJson = (SELECT TOP 1 TableName FROM @TableName)
|
||||
|
||||
--NOTE: Megvizsgáljuk, hogy létezik-e a tábla neve a Json-ben
|
||||
IF (@tableNameFromJson IS NOT NULL)
|
||||
BEGIN
|
||||
--Oszlopok nevei a Json-ben
|
||||
SET @columnNameFromJsonCommand =
|
||||
'SELECT
|
||||
[key] ColumnNameList
|
||||
INTO
|
||||
#ColumnList
|
||||
FROM
|
||||
OPENJSON(@pImportJson, N''lax $.' + @rootElement + '.' + @tableNameFromJson + '[0]'')
|
||||
SELECT * FROM #ColumnList'
|
||||
|
||||
INSERT INTO @ColumnTable
|
||||
EXEC sp_executesql @columnNameFromJsonCommand, N'@pImportJson NVARCHAR(MAX)', @pImportJson
|
||||
|
||||
SELECT @columnCount = (SELECT COUNT(*) FROM @ColumnTable)
|
||||
|
||||
--NOTE: Megvizsgáljuk, hogy van-e oszlop a Json-ben
|
||||
IF (@columnCount <> 0)
|
||||
BEGIN
|
||||
-- A Json-ből előszedjük a LASTCHANGED-et
|
||||
SET @lastChangedDateTimeCommand =
|
||||
'SELECT TOP (1)
|
||||
@lastChangedDateTime = [value]
|
||||
FROM
|
||||
OPENJSON(@pImportJson, N''strict $.' + @rootElement + '.' + @tableNameFromJson + '[0]'')
|
||||
WHERE
|
||||
[key] = ''LASTCHANGED'''
|
||||
|
||||
EXEC sp_executesql @lastChangedDateTimeCommand, N'@pImportJson NVARCHAR(MAX), @lastChangedDateTime DATETIME OUTPUT', @pImportJson, @lastChangedDateTime OUTPUT
|
||||
|
||||
-- A Json-ből előszedjük a MODIFIER-t változóba
|
||||
SET @modifierIdCommand =
|
||||
'SELECT TOP (1)
|
||||
@modifierId = [value]
|
||||
FROM
|
||||
OPENJSON(@pImportJson, N''strict $.' + @rootElement + '.' + @tableNameFromJson + '[0]'')
|
||||
WHERE
|
||||
[key] = ''MODIFIER'''
|
||||
|
||||
EXEC sp_executesql @modifierIdCommand, N'@pImportJson NVARCHAR(MAX), @modifierId INT OUTPUT', @pImportJson, @modifierId OUTPUT
|
||||
|
||||
INSERT INTO
|
||||
@ColumnDataTable
|
||||
SELECT
|
||||
COLUMN_NAME
|
||||
,DATA_TYPE
|
||||
,CHARACTER_MAXIMUM_LENGTH
|
||||
,NUMERIC_PRECISION
|
||||
,NUMERIC_SCALE
|
||||
,IS_NULLABLE
|
||||
FROM
|
||||
INFORMATION_SCHEMA.columns
|
||||
WHERE
|
||||
TABLE_NAME = @tableNameFromJson
|
||||
AND TABLE_SCHEMA = 'dbo'
|
||||
AND COLUMN_NAME IN (SELECT ColumnName FROM @ColumnTable)
|
||||
|
||||
SELECT @openJsonWithCommand =
|
||||
ISNULL(@openJsonWithCommand + CHAR(13) + CHAR(10) + CHAR(9) + ',', CHAR(9) + SPACE(1) + '')
|
||||
+ '[' + ColumnName + '] ' + ColumnType
|
||||
+ CASE
|
||||
WHEN ColumnType IN ('DECIMAL', 'NUMERIC')
|
||||
THEN ISNULL('(' + CONVERT(VARCHAR(2), NumericPrecision) + ', ' + CONVERT(VARCHAR(2), NumericScale) + ') ', ' ')
|
||||
WHEN ColumnType IN ('NVARCHAR', 'VARCHAR', 'NCHAR', 'CHAR')
|
||||
THEN ISNULL('(' + CONVERT(VARCHAR(4), IIF(MaxLengthValue = -1, 'MAX', MaxLengthValue)) + ') ', ' ')
|
||||
ELSE
|
||||
' '
|
||||
END
|
||||
+ '''$.' + ColumnName + ''''
|
||||
FROM @ColumnDataTable
|
||||
|
||||
SET @openJsonWithCommand = '(' + CHAR(13) + CHAR(10) + @openJsonWithCommand + CHAR(13) + CHAR(10) + ')'
|
||||
|
||||
--OSZLOPLISTA INSERTHEZ
|
||||
SELECT
|
||||
@columnListForInsert = ISNULL(@columnListForInsert + ', ', '') + '[' + columnDataTable.ColumnName + ']' --TODO andrejkovicse: Függvény a []-ra
|
||||
FROM
|
||||
@ColumnDataTable columnDataTable
|
||||
WHERE
|
||||
columnDataTable.ColumnName <> 'ID' OR @pInsertAlways = 1
|
||||
|
||||
--OSZLOPLISTA UPDATHEZ
|
||||
SELECT
|
||||
@columnListForUpdate = ISNULL(@columnListForUpdate + ', ', '') + '[' + @tableNameFromJson + '].' + '[' + columnDataTable.ColumnName + '] = [ImportData].' + '[' + columnDataTable.ColumnName + ']'
|
||||
FROM
|
||||
@ColumnDataTable columnDataTable
|
||||
WHERE
|
||||
columnDataTable.ColumnName NOT IN ('ID', 'SERIAL', 'CREATOR', 'CREATED', 'C_IMPORTALT')
|
||||
|
||||
-- OPENJSON path beállítása (ez megegyezik mindhárom műveletnél)
|
||||
SET @openJsonPath = N'''strict $.' + @rootElement + '.' + @tableNameFromJson + ''''
|
||||
|
||||
--INSERT összeállítása
|
||||
SET @sqlInsertCommand =
|
||||
'INSERT INTO '
|
||||
+ @tableNameFromJson + '(' + @columnListForInsert + ')
|
||||
SELECT '
|
||||
+ @columnListForInsert + '
|
||||
FROM
|
||||
OPENJSON(@pImportJson, ' + @openJsonPath + ')
|
||||
WITH '
|
||||
+ @openJsonWithCommand
|
||||
|
||||
IF(@pInsertAlways = 0)
|
||||
BEGIN
|
||||
SET @sqlInsertCommand = @sqlInsertCommand + '
|
||||
WHERE
|
||||
ID IS NULL '
|
||||
END
|
||||
|
||||
IF(@pInsertAlways = 0)
|
||||
BEGIN
|
||||
--UPDATE összeállítása
|
||||
SET @sqlUpdateCommand =
|
||||
'UPDATE '
|
||||
+ @tableNameFromJson + '
|
||||
SET '
|
||||
+ @columnListForUpdate + ', '
|
||||
+ @tableNameFromJson + '.SERIAL = ' + @tableNameFromJson + '.SERIAL + 1 ' + '
|
||||
FROM
|
||||
(SELECT *
|
||||
FROM
|
||||
OPENJSON(@pImportJson, ' + @openJsonPath + ')
|
||||
WITH '
|
||||
+ @openJsonWithCommand + '
|
||||
WHERE
|
||||
ID IS NOT NULL) AS ImportData
|
||||
WHERE ' +
|
||||
@tableNameFromJson + '.ID = ImportData.ID '
|
||||
END
|
||||
|
||||
IF(@sqlUpdateCommand IS NULL OR @sqlUpdateCommand = '')
|
||||
BEGIN
|
||||
SET @sqlCommand = @sqlInsertCommand
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @sqlCommand = @sqlInsertCommand + @sqlUpdateCommand
|
||||
END
|
||||
|
||||
--Ha Törölnünk is kell
|
||||
IF @pIsTorles = 1
|
||||
BEGIN
|
||||
--DELETE összeállítása (Igazából update mert csak töröltre állít)
|
||||
SET @sqlDeleteCommand =
|
||||
'UPDATE '
|
||||
+ @tableNameFromJson + '
|
||||
SET '
|
||||
+ @tableNameFromJson + '.TOROLT = ''T'', '
|
||||
+ @tableNameFromJson + '.SERIAL = ' + @tableNameFromJson + '.SERIAL + 1, '
|
||||
+ @tableNameFromJson + '.LASTCHANGED = ''' + CONVERT(NVARCHAR(32), @lastChangedDateTime, 126) + ''', '
|
||||
+ @tableNameFromJson + '.MODIFIER = ''' + CONVERT(NVARCHAR(32), @modifierId) + '''
|
||||
WHERE '
|
||||
+ @tableNameFromJson + '.TOROLT = ''F''
|
||||
AND ' + @tableNameFromJson + '.C_IMPORTALT = ''T'' '
|
||||
|
||||
SET @sqlCommand = @sqlDeleteCommand + @sqlCommand
|
||||
END
|
||||
|
||||
EXEC sp_executesql @sqlCommand, N'@pImportJson NVARCHAR(MAX)', @pImportJson
|
||||
END
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
|
||||
GO
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
-- =============================================
|
||||
-- Description: <Json daraboló a dinamikus importhoz>
|
||||
-- =============================================
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('[dbo].[sp_DynamicImportJsonSplit]') IS NOT NULL
|
||||
BEGIN
|
||||
DROP PROCEDURE [dbo].[sp_DynamicImportJsonSplit]
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE [dbo].[sp_DynamicImportJsonSplit]
|
||||
@pImportJson NVARCHAR(MAX)
|
||||
,@pIsTorles BIT
|
||||
,@pTableNameList NVARCHAR(2000)
|
||||
,@pInsertAlways BIT
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @OrderTable TABLE (
|
||||
Number INT
|
||||
,TableName NVARCHAR(50)
|
||||
)
|
||||
|
||||
--Paraméterként kapott táblanevek beszúrása
|
||||
INSERT INTO
|
||||
@OrderTable
|
||||
SELECT *
|
||||
FROM (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER(ORDER BY [value] DESC) Number
|
||||
,VALUE TableName
|
||||
FROM
|
||||
STRING_SPLIT (@pTableNameList, ',')
|
||||
WHERE
|
||||
RTRIM(value) <> '') AS subSelect
|
||||
DECLARE
|
||||
@number INT = 1
|
||||
,@tableName NVARCHAR(50)
|
||||
,@actualJson NVARCHAR(MAX)
|
||||
|
||||
WHILE EXISTS(SELECT TableName FROM @OrderTable WHERE Number = @number)
|
||||
BEGIN
|
||||
SELECT
|
||||
@tableName = TableName
|
||||
FROM
|
||||
@OrderTable
|
||||
WHERE
|
||||
Number = @number
|
||||
|
||||
IF EXISTS(SELECT [Key] FROM OPENJSON(@pImportJson, N'strict $.ImportJson') WHERE [Key] = @tableName)
|
||||
BEGIN
|
||||
--[dbo].[sp_DynamicImport] meghívása a JSON megfelelő részével
|
||||
SET @actualJson = CONVERT(NVARCHAR(max), (
|
||||
SELECT
|
||||
[value]
|
||||
FROM
|
||||
OPENJSON(@pImportJson, N'strict $.ImportJson')
|
||||
WHERE
|
||||
[Key] = @tableName)
|
||||
)
|
||||
|
||||
SET @actualJson = '{"ImportJson": {"' + @tableName + '":' + @actualJson + '} }'
|
||||
|
||||
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson, @pIsTorles = @pIsTorles, @pInsertAlways = @pInsertAlways
|
||||
END
|
||||
|
||||
SET @number = @number + 1;
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
|
||||
GO
|
||||
|
||||
@@ -0,0 +1,288 @@
|
||||
-- =============================================
|
||||
-- Description: <>
|
||||
-- =============================================
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('[dbo].[sp_TantargyfelosztasImport]') IS NOT NULL
|
||||
BEGIN
|
||||
DROP PROCEDURE [dbo].[sp_TantargyfelosztasImport]
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE [dbo].[sp_TantargyfelosztasImport]
|
||||
@pImportJson NVARCHAR(MAX)
|
||||
,@pIsTorles BIT
|
||||
,@pTanevId INT
|
||||
,@pIntezmenyId INT
|
||||
,@pUserId INT
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE
|
||||
@tableNameList nvarchar(2000) = 'T_TANTARGY,T_OSZTALYCSOPORT'
|
||||
,@actualJson NVARCHAR(MAX) = ''
|
||||
|
||||
EXECUTE [dbo].[sp_DynamicImportJsonSplit] @pImportJson = @pImportJson , @pIsTorles = @pIsTorles ,@pTableNameList = @tableNameList, @pInsertAlways = 0
|
||||
|
||||
IF (@pIsTorles = 1)
|
||||
BEGIN
|
||||
UPDATE
|
||||
Osztaly
|
||||
SET
|
||||
Osztaly.TOROLT = 'T'
|
||||
,Osztaly.SERIAL = Osztaly.SERIAL + 1
|
||||
,Osztaly.LASTCHANGED = GETDATE()
|
||||
,Osztaly.MODIFIER = @pUserId
|
||||
FROM
|
||||
T_OSZTALY Osztaly
|
||||
INNER JOIN
|
||||
T_OSZTALYCSOPORT OsztalyCsoport ON
|
||||
OsztalyCsoport.ID = Osztaly.ID
|
||||
AND OsztalyCsoport.C_TANEVID = @pTanevId
|
||||
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
|
||||
AND OsztalyCsoport.TOROLT = 'F'
|
||||
AND OsztalyCsoport.C_IMPORTALT = 'T'
|
||||
WHERE
|
||||
Osztaly.TOROLT = 'F'
|
||||
END
|
||||
|
||||
--Osztályok beszúrása
|
||||
SET @actualJson = ' { "ImportJson":{ "T_OSZTALY":' +
|
||||
(SELECT
|
||||
Osztaly.OsztalyCsoportId ID
|
||||
,Osztaly. C_KEPZESIFORMA
|
||||
,Osztaly. C_TECHNIKAIOSZTALY
|
||||
,Osztaly. C_GYOGYPEDAGOGIAI
|
||||
,Osztaly. C_KETTANNYELVU
|
||||
,Osztaly. C_LOGOPEDIAI
|
||||
,Osztaly. C_NEMZETISEGI
|
||||
,Osztaly. C_NYELVIELOKESZITO
|
||||
,Osztaly. C_SPORT
|
||||
,Osztaly. C_ALINTEZMENYID
|
||||
,Osztaly. C_ALTANEVID
|
||||
,Osztaly. TOROLT
|
||||
,Osztaly. SERIAL
|
||||
,Osztaly. LASTCHANGED
|
||||
,Osztaly. CREATED
|
||||
,Osztaly. MODIFIER
|
||||
,Osztaly. CREATOR
|
||||
,Osztaly. ELOZOTANEVIREKORDID
|
||||
,Osztaly. NNID
|
||||
FROM
|
||||
(SELECT
|
||||
OsztalyJsonData.*
|
||||
,OsztalyCsoport.ID OsztalyCsoportId
|
||||
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_OSZTALY')
|
||||
WITH (
|
||||
ID INT '$.ID'
|
||||
,C_KEPZESIFORMA INT '$.C_KEPZESIFORMA'
|
||||
,C_TECHNIKAIOSZTALY CHAR(1) '$.C_TECHNIKAIOSZTALY'
|
||||
,C_GYOGYPEDAGOGIAI CHAR(1) '$.C_GYOGYPEDAGOGIAI'
|
||||
,C_KETTANNYELVU CHAR(1) '$.C_KETTANNYELVU'
|
||||
,C_LOGOPEDIAI CHAR(1) '$.C_LOGOPEDIAI'
|
||||
,C_NEMZETISEGI CHAR(1) '$.C_NEMZETISEGI'
|
||||
,C_NYELVIELOKESZITO CHAR(1) '$.C_NYELVIELOKESZITO'
|
||||
,C_SPORT CHAR(1) '$.C_SPORT'
|
||||
,C_ALINTEZMENYID INT '$.C_INTEZMENYID'
|
||||
,C_ALTANEVID INT '$.C_TANEVID'
|
||||
,TOROLT CHAR(1) '$.TOROLT'
|
||||
,SERIAL INT '$.SERIAL'
|
||||
,LASTCHANGED DATETIME '$.LASTCHANGED'
|
||||
,CREATED DATETIME '$.CREATED'
|
||||
,MODIFIER INT '$.MODIFIER'
|
||||
,CREATOR INT '$.CREATOR'
|
||||
,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID'
|
||||
,NNID INT '$.NNID'
|
||||
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
|
||||
) OsztalyJsonData
|
||||
LEFT JOIN
|
||||
T_OSZTALYCSOPORT OsztalyCsoport ON
|
||||
OsztalyCsoport.C_NEV = OsztalyJsonData.OsztalyCsoportNev
|
||||
AND OsztalyCsoport.C_TANEVID = @pTanevId
|
||||
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
|
||||
AND OsztalyCsoport.TOROLT = 'F'
|
||||
AND OsztalyJsonData.ID IS NULL
|
||||
) AS Osztaly
|
||||
FOR JSON PATH,INCLUDE_NULL_VALUES)
|
||||
|
||||
SET @actualJson = @actualJson + ' } }'
|
||||
|
||||
--NOTE: A törlés itt azért false, mert a T_OSZTALY táblának külön kell megírni a törlést, mivel a sp_DynamicImport vizsgál importált flag-et és az altábláknak ninc.
|
||||
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0, @pInsertAlways = 1
|
||||
|
||||
IF (@pIsTorles = 1)
|
||||
BEGIN
|
||||
UPDATE
|
||||
Csoport
|
||||
SET
|
||||
Csoport.TOROLT = 'T'
|
||||
,Csoport.SERIAL = Csoport.SERIAL + 1
|
||||
,Csoport.LASTCHANGED = GETDATE()
|
||||
,Csoport.MODIFIER = @pUserId
|
||||
FROM
|
||||
T_CSOPORT Csoport
|
||||
INNER JOIN
|
||||
T_OSZTALYCSOPORT OsztalyCsoport ON
|
||||
OsztalyCsoport.ID = Csoport.ID
|
||||
AND OsztalyCsoport.C_TANEVID = @pTanevId
|
||||
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
|
||||
AND OsztalyCsoport.TOROLT = 'F'
|
||||
AND OsztalyCsoport.C_IMPORTALT = 'T'
|
||||
WHERE
|
||||
Csoport.TOROLT = 'F'
|
||||
END
|
||||
|
||||
--Csoportok beszúrása
|
||||
SET @actualJson = ' { "ImportJson":{ "T_CSOPORT":' +
|
||||
(SELECT
|
||||
Csoport.OsztalyCsoportId ID
|
||||
,Csoport. C_TIPUSA
|
||||
,Csoport.OsztalybontasId C_OSZTALYBONTASID
|
||||
,Csoport. C_ALINTEZMENYID
|
||||
,Csoport. C_ALTANEVID
|
||||
,Csoport. TOROLT
|
||||
,Csoport. SERIAL
|
||||
,Csoport. LASTCHANGED
|
||||
,Csoport. CREATED
|
||||
,Csoport. MODIFIER
|
||||
,Csoport. CREATOR
|
||||
,Csoport. NNID
|
||||
,Csoport. ELOZOTANEVIREKORDID
|
||||
FROM
|
||||
(SELECT
|
||||
CsoportJsonData.*
|
||||
,OsztalyCsoport.ID OsztalyCsoportId
|
||||
,Osztalybontas.ID OsztalybontasId
|
||||
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_CSOPORT')
|
||||
WITH (
|
||||
ID INT '$.ID'
|
||||
,C_TIPUSA INT '$.C_TIPUSA'
|
||||
,C_OSZTALYBONTASID INT '$.C_OSZTALYBONTASID'
|
||||
,C_ALINTEZMENYID INT '$.C_INTEZMENYID'
|
||||
,C_ALTANEVID INT '$.C_TANEVID'
|
||||
,TOROLT CHAR(1) '$.TOROLT'
|
||||
,SERIAL INT '$.SERIAL'
|
||||
,LASTCHANGED DATETIME '$.LASTCHANGED'
|
||||
,CREATED DATETIME '$.CREATED'
|
||||
,MODIFIER INT '$.MODIFIER'
|
||||
,CREATOR INT '$.CREATOR'
|
||||
,NNID INT '$.NNID'
|
||||
,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID'
|
||||
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
|
||||
,OsztalybontasNev NVARCHAR(255) '$.OsztalybontasNev'
|
||||
) CsoportJsonData
|
||||
LEFT JOIN
|
||||
T_OSZTALYCSOPORT OsztalyCsoport ON
|
||||
OsztalyCsoport.C_NEV = CsoportJsonData.OsztalyCsoportNev
|
||||
AND OsztalyCsoport.C_TANEVID = @pTanevId
|
||||
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
|
||||
AND OsztalyCsoport.TOROLT = 'F'
|
||||
AND CsoportJsonData.ID IS NULL
|
||||
LEFT JOIN
|
||||
T_OSZTALYCSOPORT Osztalybontas ON
|
||||
Osztalybontas.C_NEV = CsoportJsonData.OsztalybontasNev
|
||||
AND Osztalybontas.C_TANEVID = @pTanevId
|
||||
AND Osztalybontas.C_INTEZMENYID = @pIntezmenyId
|
||||
AND Osztalybontas.TOROLT = 'F'
|
||||
AND CsoportJsonData.ID IS NULL
|
||||
) AS Csoport
|
||||
FOR JSON PATH,INCLUDE_NULL_VALUES)
|
||||
|
||||
SET @actualJson = @actualJson + ' } }'
|
||||
|
||||
--NOTE: A törlés itt azért false, mert a T_CSOPORT táblának külön kell megírni a törlést, mivel a sp_DynamicImport vizsgál importált flag-et és az altábláknak ninc.
|
||||
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = 0 ,@pInsertAlways = 1
|
||||
|
||||
--Foglalkozások beszúrása
|
||||
SET @actualJson = ' { "ImportJson":{ "T_FOGLALKOZAS":' +
|
||||
(SELECT
|
||||
Foglalkozas. ID
|
||||
,Foglalkozas. C_FOGLALKOZASTIPUSA
|
||||
,Foglalkozas. C_ORASZAM
|
||||
,Foglalkozas. C_NEV
|
||||
,Foglalkozas. C_ERTEKELESKELL
|
||||
,Foglalkozas. C_MULASZTASKELL
|
||||
,Foglalkozas. C_TANARFELVEHETI
|
||||
,Foglalkozas.TantargyId C_TANTARGYID
|
||||
,Foglalkozas.OsztalyCsoportId C_OSZTALYCSOPORTID
|
||||
,Foglalkozas.TanarId C_TANARID
|
||||
,Foglalkozas. C_INTEZMENYID
|
||||
,Foglalkozas. C_TANEVID
|
||||
,Foglalkozas. C_IMPORTALT
|
||||
,Foglalkozas. TOROLT
|
||||
,Foglalkozas. SERIAL
|
||||
,Foglalkozas. LASTCHANGED
|
||||
,Foglalkozas. CREATED
|
||||
,Foglalkozas. MODIFIER
|
||||
,Foglalkozas. CREATOR
|
||||
,Foglalkozas. ELOZOTANEVIREKORDID
|
||||
,Foglalkozas. NNID
|
||||
FROM
|
||||
(SELECT
|
||||
FoglalkozasJsonData.*
|
||||
,OsztalyCsoport.ID OsztalyCsoportId
|
||||
,Felhasznalo.ID TanarId
|
||||
,Tantargy.ID TantargyId
|
||||
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_FOGLALKOZAS')
|
||||
WITH (
|
||||
ID INT '$.ID'
|
||||
,C_FOGLALKOZASTIPUSA INT '$.C_FOGLALKOZASTIPUSA'
|
||||
,C_ORASZAM NUMERIC(10,2) '$.C_ORASZAM'
|
||||
,C_NEV NVARCHAR(255) '$.C_NEV'
|
||||
,C_ERTEKELESKELL CHAR(1) '$.C_ERTEKELESKELL'
|
||||
,C_MULASZTASKELL CHAR(1) '$.C_MULASZTASKELL'
|
||||
,C_TANARFELVEHETI CHAR(1) '$.C_TANARFELVEHETI'
|
||||
,C_TANTARGYID INT '$.C_TANTARGYID'
|
||||
,C_OSZTALYCSOPORTID INT '$.C_OSZTALYCSOPORTID'
|
||||
,C_TANARID INT '$.C_TANARID'
|
||||
,C_INTEZMENYID INT '$.C_INTEZMENYID'
|
||||
,C_TANEVID INT '$.C_TANEVID'
|
||||
,C_IMPORTALT CHAR(1) '$.C_IMPORTALT'
|
||||
,TOROLT CHAR(1) '$.TOROLT'
|
||||
,SERIAL INT '$.SERIAL'
|
||||
,LASTCHANGED DATETIME '$.LASTCHANGED'
|
||||
,CREATED DATETIME '$.CREATED'
|
||||
,MODIFIER INT '$.MODIFIER'
|
||||
,CREATOR INT '$.CREATOR'
|
||||
,ELOZOTANEVIREKORDID INT '$.ELOZOTANEVIREKORDID'
|
||||
,NNID INT '$.NNID'
|
||||
,OsztalyCsoportNev NVARCHAR(255) '$.OsztalyCsoportNev'
|
||||
,TanarNev NVARCHAR(255) '$.TanarNev'
|
||||
,TantargyNev NVARCHAR(255) '$.TantargyNev'
|
||||
) FoglalkozasJsonData
|
||||
LEFT JOIN
|
||||
T_OSZTALYCSOPORT OsztalyCsoport ON
|
||||
OsztalyCsoport.C_NEV = FoglalkozasJsonData.OsztalyCsoportNev
|
||||
AND OsztalyCsoport.C_TANEVID = @pTanevId
|
||||
AND OsztalyCsoport.C_INTEZMENYID = @pIntezmenyId
|
||||
AND OsztalyCsoport.TOROLT = 'F'
|
||||
LEFT JOIN
|
||||
T_FELHASZNALO Felhasznalo ON
|
||||
Felhasznalo.C_NYOMTATASINEV = FoglalkozasJsonData.TanarNev
|
||||
AND Felhasznalo.C_TANEVID = @pTanevId
|
||||
AND Felhasznalo.C_INTEZMENYID = @pIntezmenyId
|
||||
AND Felhasznalo.TOROLT = 'F'
|
||||
LEFT JOIN
|
||||
T_TANTARGY Tantargy ON
|
||||
Tantargy.C_NEV = FoglalkozasJsonData.TantargyNev
|
||||
AND Tantargy.C_TANEVID = @pTanevId
|
||||
AND Tantargy.C_INTEZMENYID = @pIntezmenyId
|
||||
AND Tantargy.TOROLT = 'F'
|
||||
) AS Foglalkozas
|
||||
FOR JSON PATH,INCLUDE_NULL_VALUES)
|
||||
|
||||
SET @actualJson = @actualJson + ' } }'
|
||||
|
||||
EXECUTE [dbo].[sp_DynamicImport] @pImportJson = @actualJson , @pIsTorles = @pIsTorles, @pInsertAlways = 0
|
||||
|
||||
END
|
||||
|
||||
|
||||
GO
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('[dbo].[sp_UpdateErtesitesiDatum]') IS NOT NULL
|
||||
BEGIN
|
||||
DROP PROCEDURE [dbo].[sp_UpdateErtesitesiDatum]
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE [dbo].[sp_UpdateErtesitesiDatum]
|
||||
-- Add the parameters for the stored procedure here
|
||||
@pUserId INT
|
||||
,@pNebuloId INT
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
-- SET NOCOUNT ON added to prevent extra result sets from
|
||||
-- interfering with SELECT statements.
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @currentDateTime DATETIME
|
||||
SET @currentDateTime = (SELECT GETDATE())
|
||||
|
||||
BEGIN
|
||||
UPDATE
|
||||
T_NEBULO
|
||||
SET
|
||||
C_ERTESITESDATUMA = @currentDateTime
|
||||
|
||||
,C_IMPORTALT = 'F'
|
||||
,SERIAL = SERIAL + 1
|
||||
,LASTCHANGED = @currentDateTime
|
||||
,MODIFIER = @pUserId
|
||||
WHERE
|
||||
ID = @pNebuloId
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
Reference in New Issue
Block a user