DROP PROCEDURE IF EXISTS [dbo].[sp_CsengetesiRendOrakTorles] GO CREATE PROCEDURE [dbo].[sp_CsengetesiRendOrakTorles] @TanevId int, @xml xml AS BEGIN SET NOCOUNT ON; DECLARE @torlendoCsengetesiRendek TABLE (id int); INSERT INTO @torlendoCsengetesiRendek SELECT sor.value('.', 'int') AS id FROM @xml.nodes('/CsengetesiRendOraTorles/IdLista/Id') as sorok(sor) SELECT ID oraId, csengrendOraId, newCsengrendOraId, newOraKezdete, newOraVege, ISNULL(newOraszam, 0) newOraszam, newCsengrendId, IsTanora, UpdateVegeDate, UpdateKezdeteDate, UpdateType INTO #TEMPmodositandoOrak from ( select kapcsolodoOrak.ID, kapcsolodoOrak.C_CSENGETESIRENDID, kapcsolodoOrak.C_CSENGETESIRENDORAID csengrendOraId, kapcsolodoOrak.C_ORASZAM, alapcsora.C_KEZDETE, alapcsora.C_VEGE, kapcsolodoOrak.C_ORAKEZDETE, kapcsolodoOrak.C_ORAVEGE, kapcsolodoOrak.Tanora IsTanora, csengrend.ID newCsengrendOraId, csengrend.C_CSENGETESIRENDID newCsengrendId, csengrend.C_KEZDETE newOraKezdete, csengrend.C_VEGE newOraVege, csengrend.C_ORASZAM newOraszam ,IIF(kapcsolodoOrak.Tanora = 0 and cast(alapcsora.C_VEGE as time) = cast(kapcsolodoOrak.C_ORAVEGE as time) and csengrend.C_VEGE is not null, 1, 0) UpdateVegeDate ,IIF(kapcsolodoOrak.Tanora = 0 and cast(alapcsora.C_KEZDETE as time) = cast(kapcsolodoOrak.C_ORAKEZDETE as time) and csengrend.C_KEZDETE is not null, 1, 0) UpdateKezdeteDate ,IIF(csengrend.ID is null, 1, 0) UpdateType from ( select x.ID, C_CSENGETESIRENDID, C_CSENGETESIRENDORAID, C_ORASZAM, C_ORAKEZDETE, C_ORAVEGE, Tanora from( select ID, C_CSENGETESIRENDID, C_CSENGETESIRENDORAID, C_ORASZAM, C_ORAKEZDETE, C_ORAVEGE, 0 Tanora from T_ORARENDIORA_OSSZES union select ID, C_CSENGETESIRENDID, C_CSENGETESIRENDORAID, C_ORASZAM, C_ORAKEZDETE, C_ORAVEGE, 1 Tanora from T_TANITASIORA_OSSZES ) x inner join @torlendoCsengetesiRendek torlendoIdk on torlendoIdk.id = x.C_CSENGETESIRENDORAID ) kapcsolodoOrak left join ( select ID, C_KEZDETE, C_VEGE from T_CSENGETESIRENDORA_OSSZES) alapcsora on alapcsora.ID = kapcsolodoOrak.C_CSENGETESIRENDORAID left join (select csora.ID, csora.C_CSENGETESIRENDID, csora.C_KEZDETE, csora.C_VEGE, csora.C_ORASZAM from T_CSENGETESIRENDORA_OSSZES csora inner join T_CSENGETESIREND_OSSZES on csora.C_CSENGETESIRENDID = T_CSENGETESIREND_OSSZES.ID And T_CSENGETESIREND_OSSZES.C_AKTIV = 'T' where csora.C_TANEVID = @TanevId)csengrend on csengrend.C_ORASZAM = kapcsolodoOrak.C_ORASZAM and csengrend.ID != kapcsolodoOrak.C_CSENGETESIRENDORAID )t UPDATE o SET o.C_ORAVEGE = IIF(temp.UpdateVegeDate = 1, DATEADD(HOUR, datepart(hour, temp.newOraVege),DATEADD(MINUTE,datepart(minute, temp.newOraVege),CAST(CAST(o.C_ORAVEGE AS DATE) as datetime))), o.C_ORAVEGE), o.C_ORAKEZDETE = IIF(temp.UpdateKezdeteDate = 1, DATEADD(HOUR, datepart(hour, temp.newOraVege),DATEADD(MINUTE,datepart(minute, temp.newOraVege),CAST(CAST(o.C_ORAKEZDETE AS DATE) as datetime))), o.C_ORAKEZDETE), o.C_CSENGETESIRENDID = temp.newCsengrendId, o.C_CSENGETESIRENDORAID = temp.newCsengrendOraId, o.C_ORASZAM = temp.newOraszam from T_ORARENDIORA_OSSZES o inner join #TEMPmodositandoOrak temp on temp.csengrendOraId = o.C_CSENGETESIRENDORAID and temp.IsTanora = 0 UPDATE t SET t.C_CSENGETESIRENDID = temp.newCsengrendId, t.C_CSENGETESIRENDORAID = temp.newCsengrendOraId, t.C_ORASZAM = temp.newOraszam from T_TANITASIORA_OSSZES t inner join #TEMPmodositandoOrak temp on temp.csengrendOraId = t.C_CSENGETESIRENDORAID and temp.IsTanora = 1 DELETE csro FROM T_CSENGETESIRENDORA_OSSZES csro inner join @torlendoCsengetesiRendek torlendoIdk on torlendoIdk.id = csro.ID DROP TABLE #TEMPmodositandoOrak END GO