-- ============================================= -- 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