150 lines
5.3 KiB
Transact-SQL
150 lines
5.3 KiB
Transact-SQL
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
|
|
|