SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('sp_ImportEszkozok', 'P') IS NOT NULL BEGIN DROP PROCEDURE sp_ImportEszkozok END GO CREATE PROCEDURE [sp_ImportEszkozok] @xml xml, @userID int, @intezmenyID int, @tanevID int AS BEGIN BEGIN TRY SET NOCOUNT ON SET XACT_ABORT ON DECLARE @tbl TABLE ( C_NEV nvarchar(255), C_TEREMID int, C_FELELOSID int, C_DARABSZAM int, C_TIPUS int, C_KATEGORIA int, C_BESZERZESDATUM datetime, C_LELTARISZAM nvarchar(20), C_GYARISZAM nvarchar(20), C_MEGJEGYZES nvarchar(255) ) INSERT INTO @tbl SELECT sor.value('(EszkozNeve)[1]', 'nvarchar(255)') AS C_NEV, sor.value('number((TeremId)[1])', 'int') AS C_TEREMID, sor.value('number((FelelosId)[1])', 'int') AS C_FELELOSID, sor.value('(DarabSzam)[1]', 'int') AS C_DARABSZAM, sor.value('number((EszkozTipus)[1])', 'int') AS C_TIPUS, sor.value('number((kategoria)[1])', 'int') AS C_KATEGORIA, sor.value('(beszerzes-datuma)[1]', 'datetime') AS C_BESZERZESDATUM, sor.value('(LeltariSzam)[1]', 'nvarchar(20)') AS C_LELTARISZAM, sor.value('(gyari-szam)[1]', 'nvarchar(20)') AS C_GYARISZAM, sor.value('(megjegyzes)[1]', 'nvarchar(255)') AS C_MEGJEGYZES FROM @xml.nodes('/EszkozImport/EszkozLista/Eszkoz') as sorok(sor) BEGIN TRANSACTION UPDATE e SET e.C_BESZERZESDATUM = IsNull(t.C_BESZERZESDATUM, e.C_BESZERZESDATUM) ,e.C_GYARISZAM = IsNull(t.C_GYARISZAM, e.C_GYARISZAM) ,e.C_KATEGORIA = IsNull(t.C_KATEGORIA, e.C_KATEGORIA) ,e.C_DARABSZAM = IsNull(t.C_DARABSZAM, e.C_DARABSZAM) ,e.C_LELTARISZAM = IsNull(t.C_LELTARISZAM, e.C_LELTARISZAM) ,e.C_MEGJEGYZES = IsNull(t.C_MEGJEGYZES, e.C_MEGJEGYZES) ,e.C_TIPUS = IsNull(t.C_TIPUS, e.C_TIPUS) ,e.C_FELELOSID = IsNull(t.C_FELELOSID, e.C_FELELOSID) ,e.SERIAL = e.SERIAL + 1 ,e.LASTCHANGED = GETDATE() -- datetime ,e.MODIFIER = @userID -- int FROM T_ESZKOZ e INNER JOIN @tbl t ON t.C_NEV = e.C_NEV AND t.C_TEREMID = e.C_TEREMID INSERT INTO T_ESZKOZ ( C_BERELT ,C_BESZERZESDATUM ,C_BESZERZESIAR ,C_DARABSZAM ,C_FOKONYVISZAM ,C_GYARISZAM ,C_GYARTASIEV ,C_HALOZATIKAPCSOLAT ,C_HORDOZHATO ,C_INTERNETKAPCSOLAT ,C_KATEGORIA ,C_LELTARISZAM ,C_MEGJEGYZES ,C_MULTIMEDIAS ,C_NEV ,C_PEDAGOGUSHOZZAFERHET ,C_SZALLITO ,C_TANULOHOZZAFERHET ,C_TARTOZEK ,C_TARTOZEKHIVATKOZAS ,C_TIPUS ,C_CELJA ,C_JELLEGE ,C_MENNYISEGIEGYSEG ,C_VONALKOD ,C_TEREMID ,C_FELELOSID ,C_INTEZMENYID ,C_TANEVID ,TOROLT ,SERIAL ,LASTCHANGED ,CREATED ,MODIFIER ,CREATOR ) SELECT 'F' AS C_BERELT -- C_BERELT - char(1) ,NULL AS C_BESZERZESDATUM -- C_BESZERZESDATUM - datetime ,NULL AS C_BESZERZESIAR -- C_BESZERZESIAR - int ,t.C_DARABSZAM AS C_DARABSZAM -- C_DARABSZAM - int ,NULL AS C_FOKONYVISZAM -- C_FOKONYVISZAM - nvarchar(255) ,t.C_GYARISZAM AS C_GYARISZAM -- C_GYARISZAM - nvarchar(20) ,NULL AS C_GYARTASIEV -- C_GYARTASIEV - int ,NULL AS C_HALOZATIKAPCSOLAT -- C_HALOZATIKAPCSOLAT - char(1) ,NULL AS C_HORDOZHATO -- C_HORDOZHATO - char(1) ,NULL AS C_INTERNETKAPCSOLAT -- C_INTERNETKAPCSOLAT - char(1) ,t.C_KATEGORIA AS C_KATEGORIA -- C_KATEGORIA - int ,t.C_LELTARISZAM AS C_LELTARISZAM -- C_LELTARISZAM - nvarchar(20) ,t.C_MEGJEGYZES AS C_MEGJEGYZES -- C_MEGJEGYZES - nvarchar(255) ,NULL AS C_MULTIMEDIAS -- C_MULTIMEDIAS - char(1) ,t.C_NEV AS C_NEV -- C_NEV - nvarchar(255) ,NULL AS C_PEDAGOGUSHOZZAFERHET -- C_PEDAGOGUSHOZZAFERHET - char(1) ,NULL AS C_SZALLITO -- C_SZALLITO - nvarchar(255) ,NULL AS C_TANULOHOZZAFERHET -- C_TANULOHOZZAFERHET - char(1) ,NULL AS C_TARTOZEK -- C_TARTOZEK - char(1) ,NULL AS C_TARTOZEKHIVATKOZAS -- C_TARTOZEKHIVATKOZAS - nvarchar(20) ,t.C_TIPUS AS C_TIPUS -- C_TIPUS - int ,NULL AS C_CELJA -- C_CELJA - int ,NULL AS C_JELLEGE -- C_JELLEGE - int ,NULL AS C_MENNYISEGIEGYSEG -- C_MENNYISEGIEGYSEG - int ,NULL AS C_VONALKOD -- C_VONALKOD - int ,t.C_TEREMID AS C_TEREMID -- C_TEREMID - int ,t.C_FELELOSID AS C_FELELOSID -- C_FELELOSID - int ,@intezmenyID AS C_INTEZMENYID ,@tanevID AS C_TANEVID ,'F' AS TOROLT -- TOROLT - char(1) ,1 AS SERIAL -- SERIAL - int ,NULL AS LASTCHANGED -- LASTCHANGED - datetime ,GETDATE() AS CREATED -- CREATED - datetime ,NULL AS MODIFIER -- MODIFIER - int ,@userID AS CREATOR -- CREATOR - int FROM @tbl t WHERE NOT EXISTS (SELECT 1 FROM T_ESZKOZ WHERE C_NEV = t.C_NEV AND C_TEREMID = t.C_TEREMID); COMMIT TRANSACTION END TRY BEGIN CATCH IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0 ROLLBACK TRANSACTION; THROW END CATCH END GO