Files
2024-03-13 00:33:46 +01:00

96 lines
2.9 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS sp_ImportTermek
GO
CREATE PROCEDURE sp_ImportTermek
@xml xml,
@userID int,
@intezmenyID int,
@tanevID int,
@mukodesiHelyId int
AS
BEGIN
BEGIN TRY
SET NOCOUNT ON
SET XACT_ABORT ON
DECLARE @tbl TABLE (
C_JELLEG int,
C_KAPACITAS int,
C_NEV nvarchar(50),
C_TERULET int,
C_TOBBORATLEHETTARTANI char(1),
C_VIZSGAKAPACITAS int,
C_MUKODESIHELYID int,
C_TEREMFELELOSID int
)
INSERT INTO @tbl
SELECT
sor.value('number((JellegId)[1])', 'int') AS C_JELLEG,
sor.value('xs:decimal((Kapacitas)[1])', 'int') AS C_KAPACITAS,
sor.value('(TeremNev)[1]', 'nvarchar(50)') AS C_NEV,
sor.value('number((Terulet)[1])', 'int') AS C_TERULET,
sor.value('(tobbora)[1]', 'char(1)') AS C_TOBBORATLEHETTARTANI,
sor.value('number((vizsgakapacitas)[1])', 'int') AS C_VIZSGAKAPACITAS,
@mukodesiHelyId AS C_MUKODESIHELYID,
sor.value('number((teremfelelos)[1])', 'int') AS C_TEREMFELELOSID
FROM @xml.nodes('/TeremImport/TeremLista/Terem') as sorok(sor)
BEGIN TRANSACTION
UPDATE t
SET
t.C_JELLEG = IsNull(s.C_JELLEG, t.C_JELLEG)
,t.C_KAPACITAS = IsNull(s.C_KAPACITAS, t.C_KAPACITAS)
,t.C_NEV = IsNull(s.C_NEV, t.C_NEV)
,t.C_TERULET = IsNull(s.C_TERULET, t.C_TERULET)
,t.C_TOBBORATLEHETTARTANI = IsNull(s.C_TOBBORATLEHETTARTANI, ISNULL(t.C_TOBBORATLEHETTARTANI,'F'))
,t.C_VIZSGAKAPACITAS = IsNull(s.C_VIZSGAKAPACITAS, t.C_VIZSGAKAPACITAS)
,t.C_MUKODESIHELYID = IsNull(s.C_MUKODESIHELYID, t.C_MUKODESIHELYID)
,t.C_TEREMFELELOSID = IsNull(s.C_TEREMFELELOSID, t.C_TEREMFELELOSID)
,t.SERIAL = t.SERIAL + 1
,t.LASTCHANGED = GETDATE()
,t.MODIFIER = @userID
FROM T_TEREM t
INNER JOIN @tbl s ON s.C_NEV = t.C_NEV AND s.C_MUKODESIHELYID = t.C_MUKODESIHELYID AND t.C_INTEZMENYID = t.C_INTEZMENYID
INSERT INTO T_TEREM (
C_AKTIV
,C_JELLEG
,C_KAPACITAS
,C_NEV
,C_TERULET
,C_TOBBORATLEHETTARTANI
,C_VIZSGAKAPACITAS
,C_MUKODESIHELYID
,C_TEREMFELELOSID
,C_INTEZMENYID
,C_TANEVID
,MODIFIER
,CREATOR
) SELECT
'T' AS C_ACTIVE
,C_JELLEG AS C_JELLEG
,C_KAPACITAS AS C_KAPACITAS
,C_NEV AS C_NEV
,C_TERULET AS C_TERULET
,ISNULL(C_TOBBORATLEHETTARTANI,'F') AS C_TOBBORATLEHETTARTANI
,C_VIZSGAKAPACITAS AS C_VIZSGAKAPACITAS
,C_MUKODESIHELYID AS C_MUKODESIHELYID
,C_TEREMFELELOSID AS C_TEREMFELELOSID
,@intezmenyID AS C_INTEZMENYID
,@tanevID AS C_TANEVID
,NULL AS MODIFIER
,@userID AS CREATOR
FROM @tbl t
WHERE NOT EXISTS (SELECT 1 FROM T_TEREM WHERE C_NEV = t.C_NEV AND C_MUKODESIHELYID = t.C_MUKODESIHELYID)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0
ROLLBACK TRANSACTION;
THROW
END CATCH
END