222 lines
8.2 KiB
Transact-SQL
222 lines
8.2 KiB
Transact-SQL
-- =============================================
|
|
-- Description: A nebuló lista importálása XML-ből
|
|
-- =============================================
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
|
|
IF OBJECT_ID('[dbo].[sp_NebuloImport]') IS NOT NULL
|
|
BEGIN
|
|
DROP PROCEDURE [dbo].[sp_NebuloImport]
|
|
END
|
|
GO
|
|
|
|
|
|
CREATE PROCEDURE [dbo].[sp_NebuloImport]
|
|
-- Add the parameters for the stored procedure here
|
|
@pNebuloListXml XML
|
|
,@pIntezmenyId INT
|
|
,@pTanevId INT
|
|
,@pUserId INT
|
|
,@pNebuloImportTipusId INT
|
|
|
|
AS
|
|
BEGIN
|
|
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
|
|
SET NOCOUNT ON;
|
|
|
|
-- XML paraméter értelmezése
|
|
SELECT
|
|
-- MERGE-höz adatok
|
|
NebuloID = 0
|
|
,IsExistingNebulo = 0
|
|
|
|
--Egyszerű import adatok
|
|
,Vezeteknev = Nebulo.value('(Vezeteknev)[1]', 'NVARCHAR(255)')
|
|
,Keresztnev = Nebulo.value('(Keresztnev)[1]', 'NVARCHAR(255)')
|
|
,AnyjaVezetekneve = Nebulo.value('(AnyjaVezetekneve)[1]', 'NVARCHAR(255)')
|
|
,AnyjaKeresztneve = Nebulo.value('(AnyjaKeresztneve)[1]', 'NVARCHAR(255)')
|
|
,SzuletesiVezeteknev = Nebulo.value('(SzuletesiVezeteknev)[1]', 'NVARCHAR(255)')
|
|
,SzuletesiKeresztnev = Nebulo.value('(SzuletesiKeresztnev)[1]', 'NVARCHAR(255)')
|
|
,SzuletesiOrszag = Nebulo.value('number((SzuletesiOrszag)[1])', 'INT')
|
|
,SzuletesiHely = Nebulo.value('(SzuletesiHely)[1]', 'NVARCHAR(50)')
|
|
,SzuletesiIdo = Nebulo.value('(SzuletesiIdoString)[1]', 'DATETIME')
|
|
,TKCimeAzonos = Nebulo.value('(TKCimeAzonosString)[1]', 'CHAR(1)')
|
|
,THCimeAzonos = Nebulo.value('(THCimeAzonosString)[1]', 'CHAR(1)')
|
|
,Anyanyelv = Nebulo.value('number((Anyanyelv)[1])', 'INT')
|
|
,Allampolgarsag = Nebulo.value('number((Allampolgarsag)[1])', 'INT')
|
|
,EletvitelszeruOttLakasKorzetes = Nebulo.value('(EletvitelszeruOttLakasKorzetesString)[1]', 'CHAR(1)')
|
|
,FeladatellatasiHelyId = Nebulo.value('number((FeladatellatasiHelyId)[1])', 'INT')
|
|
,Tagozat = Nebulo.value('number((Tagozat)[1])', 'INT')
|
|
,FelvetelStatusza = Nebulo.value('number((FelvetelStatusza)[1])', 'INT')
|
|
,BTMLetszamSuly = Nebulo.value('number((BTMLetszamSuly)[1])', 'NUMERIC(10,2)')
|
|
,SNILetszamSuly = Nebulo.value('number((SNILetszamSuly)[1])', 'NUMERIC(10,2)')
|
|
,KirSzolgaltatasTipusId = Nebulo.value('number((KirSzolgaltatasTipusId)[1])', 'INT')
|
|
|
|
--Egyszerű import lakcímmel adatok
|
|
,Iranyitoszam = Nebulo.value('(Iranyitoszam)[1]', 'NVARCHAR(20)')
|
|
,Helyseg = Nebulo.value('(Helyseg)[1]', 'NVARCHAR(255)')
|
|
,Kozterulet = Nebulo.value('(Kozterulet)[1]', 'NVARCHAR(40)')
|
|
,KozteruletJelleg = Nebulo.value('number((KozteruletJelleg)[1])', 'INT')
|
|
,Szam = Nebulo.value('(Szam)[1]', 'NVARCHAR(30)')
|
|
,Emelet = Nebulo.value('(Emelet)[1]', 'NVARCHAR(40)')
|
|
,Ajto = Nebulo.value('(Ajto)[1]', 'NVARCHAR(30)')
|
|
INTO
|
|
#tempNebuloList
|
|
FROM
|
|
@pNebuloListXml.nodes('NebuloImport/NebuloList/Nebulo') AS NebuloList(Nebulo)
|
|
|
|
-- A létező nebulók ID-ját kitöltjük, és az IsExistingNebulo-t is UPDATE-eljük 4T alapján
|
|
UPDATE
|
|
tempNebulo
|
|
SET
|
|
tempNebulo.NebuloID = nebulo.ID
|
|
,tempNebulo.IsExistingNebulo = IIF(nebulo.ID IS NULL, 0, 1)
|
|
FROM
|
|
#tempNebuloList tempNebulo
|
|
INNER JOIN
|
|
T_NEBULO_OSSZES nebulo ON
|
|
nebulo.C_TANULOCSALADINEVE = tempNebulo.Vezeteknev AND
|
|
nebulo.C_TANULOUTONEVE = tempNebulo.Keresztnev AND
|
|
nebulo.C_EDESANYJASZULETESICSALADINEV = tempNebulo.AnyjaVezetekneve AND
|
|
nebulo.C_EDESANYJASZULETESIUTONEVE = tempNebulo.AnyjaKeresztneve AND
|
|
nebulo.C_SZULETESIORSZAG = tempNebulo.SzuletesiOrszag AND
|
|
nebulo.C_SZULETESIHELY = tempNebulo.SzuletesiHely AND
|
|
nebulo.C_SZULETESIIDO = tempNebulo.SzuletesiIdo
|
|
|
|
BEGIN TRY
|
|
BEGIN TRANSACTION
|
|
|
|
DECLARE @currentDateTime DATETIME
|
|
SET @currentDateTime = (SELECT GETDATE())
|
|
|
|
DECLARE @isUpdateLakcim BIT
|
|
SET @isUpdateLakcim = CASE WHEN @pNebuloImportTipusId = 1 THEN 1 ELSE 0 END
|
|
|
|
-- Nebulók INSERT-je vagy UPDATE-je aka MERGE
|
|
MERGE T_NEBULO_OSSZES nebulo
|
|
USING #tempNebuloList tempNebulo ON
|
|
tempNebulo.NebuloID = nebulo.ID AND nebulo.C_TANEVID = @pTanevId
|
|
WHEN MATCHED AND tempNebulo.IsExistingNebulo = 1 THEN
|
|
UPDATE SET
|
|
--Egyszerű import adatok
|
|
nebulo.C_TANULOCSALADINEVE = tempNebulo.Vezeteknev
|
|
,nebulo.C_TANULOUTONEVE = tempNebulo.Keresztnev
|
|
,nebulo.C_EDESANYJASZULETESICSALADINEV = tempNebulo.AnyjaVezetekneve
|
|
,nebulo.C_EDESANYJASZULETESIUTONEVE = tempNebulo.AnyjaKeresztneve
|
|
,nebulo.C_SZULETESICSALADINEVE = tempNebulo.SzuletesiVezeteknev
|
|
,nebulo.C_SZULETESIUTONEVE = tempNebulo.SzuletesiKeresztnev
|
|
,nebulo.C_SZULETESIORSZAG = tempNebulo.SzuletesiOrszag
|
|
,nebulo.C_SZULETESIHELY = tempNebulo.SzuletesiHely
|
|
,nebulo.C_SZULETESIIDO = tempNebulo.SzuletesiIdo
|
|
--nebulo.C_FELVETELSTATUSZA = tempNebulo.FelvetelStatusza
|
|
|
|
--Egyszerű import lakcímmel adatok
|
|
,nebulo.C_IRANYITOSZAM = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Iranyitoszam ELSE nebulo.C_IRANYITOSZAM END
|
|
,nebulo.C_HELYSEGNEV = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Helyseg ELSE nebulo.C_HELYSEGNEV END
|
|
,nebulo.C_KOZTERULETNEV = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Kozterulet ELSE nebulo.C_KOZTERULETNEV END
|
|
,nebulo.C_KOZTERULETJELLEGE = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.KozteruletJelleg ELSE nebulo.C_KOZTERULETJELLEGE END
|
|
,nebulo.C_HAZSZAM = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Szam ELSE nebulo.C_HAZSZAM END
|
|
,nebulo.C_EMELET = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Emelet ELSE nebulo.C_EMELET END
|
|
,nebulo.C_AJTO = CASE WHEN @isUpdateLakcim = 1 THEN tempNebulo.Ajto ELSE nebulo.C_AJTO END
|
|
|
|
--Technikai adatok
|
|
,nebulo.TOROLT = 'F'
|
|
,nebulo.SERIAL = nebulo.SERIAL + 1
|
|
,nebulo.LASTCHANGED = @currentDateTime
|
|
,nebulo.MODIFIER = @pUserId
|
|
WHEN NOT MATCHED THEN
|
|
INSERT (
|
|
--Egyszerű import adatok
|
|
C_TANULOCSALADINEVE
|
|
,C_TANULOUTONEVE
|
|
,C_EDESANYJASZULETESICSALADINEV
|
|
,C_EDESANYJASZULETESIUTONEVE
|
|
,C_SZULETESICSALADINEVE
|
|
,C_SZULETESIUTONEVE
|
|
,C_SZULETESIORSZAG
|
|
,C_SZULETESIHELY
|
|
,C_SZULETESIIDO
|
|
,C_KEPVISELOCIMEAZONOS
|
|
,C_TARTOZKODASIHELYAZONOS
|
|
,C_ANYANYELVE
|
|
,C_ALLAMPOLGARSAGA
|
|
,C_ELETVITELSZERUOTTLAKASKORZET
|
|
,C_FELADATELLATASIHELYID
|
|
,C_TAGOZAT
|
|
,C_FELVETELSTATUSZA
|
|
,C_BTMLETSZAMSULY
|
|
,C_SNILETSZAMSULY
|
|
,C_KIRSZOLGALTATASTIPUSID
|
|
|
|
--Egyszerű import lakcímmel adatok
|
|
,C_IRANYITOSZAM
|
|
,C_HELYSEGNEV
|
|
,C_KOZTERULETNEV
|
|
,C_KOZTERULETJELLEGE
|
|
,C_HAZSZAM
|
|
,C_EMELET
|
|
,C_AJTO
|
|
|
|
--Technikai adatok
|
|
,C_INTEZMENYID
|
|
,C_TANEVID
|
|
,TOROLT
|
|
,LASTCHANGED
|
|
,CREATED
|
|
,MODIFIER
|
|
,CREATOR)
|
|
VALUES (
|
|
--Egyszerű import adatok
|
|
tempNebulo.Vezeteknev
|
|
,tempNebulo.Keresztnev
|
|
,tempNebulo.AnyjaVezetekneve
|
|
,tempNebulo.AnyjaKeresztneve
|
|
,tempNebulo.SzuletesiVezeteknev
|
|
,tempNebulo.SzuletesiKeresztnev
|
|
,tempNebulo.SzuletesiOrszag
|
|
,tempNebulo.SzuletesiHely
|
|
,tempNebulo.SzuletesiIdo
|
|
,tempNebulo.TKCimeAzonos
|
|
,tempNebulo.THCimeAzonos
|
|
,tempNebulo.Anyanyelv
|
|
,tempNebulo.Allampolgarsag
|
|
,tempNebulo.EletvitelszeruOttLakasKorzetes
|
|
,tempNebulo.FeladatellatasiHelyId
|
|
,tempNebulo.Tagozat
|
|
,tempNebulo.FelvetelStatusza
|
|
,tempNebulo.BTMLetszamSuly
|
|
,tempNebulo.SNILetszamSuly
|
|
,tempNebulo.KirSzolgaltatasTipusId
|
|
|
|
--Egyszerű import lakcímmel adatok
|
|
,tempNebulo.Iranyitoszam
|
|
,tempNebulo.Helyseg
|
|
,tempNebulo.Kozterulet
|
|
,tempNebulo.KozteruletJelleg
|
|
,tempNebulo.Szam
|
|
,tempNebulo.Emelet
|
|
,tempNebulo.Ajto
|
|
|
|
--Technikai adatok
|
|
,@pIntezmenyId
|
|
,@pTanevId
|
|
,'F'
|
|
,@currentDateTime
|
|
,@currentDateTime
|
|
,@pUserId
|
|
,@pUserId);
|
|
|
|
COMMIT TRANSACTION
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0
|
|
ROLLBACK TRANSACTION;
|
|
THROW
|
|
END CATCH
|
|
|
|
END
|
|
GO
|
|
|