163 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
IF OBJECT_ID('[dbo].[sp_DeleteOrarendIdoszak]') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE [dbo].[sp_DeleteOrarendIdoszak]
 | 
						|
END  
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE [dbo].[sp_DeleteOrarendIdoszak]
 | 
						|
	@start				datetime,
 | 
						|
	@end				datetime,
 | 
						|
	@intezmenyId		int,
 | 
						|
	@tanevId			int,
 | 
						|
	@tanarId			int,
 | 
						|
	@osztalyCsoportId	int,
 | 
						|
	@hetirendId			int,
 | 
						|
	@hetNapjaId			int,
 | 
						|
	@oraszam			int
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
	BEGIN TRY
 | 
						|
    SET NOCOUNT ON
 | 
						|
    SET XACT_ABORT ON
 | 
						|
 | 
						|
	DECLARE @startDate DATETIME;
 | 
						|
		SET @startDate = CAST(@start AS DATE)
 | 
						|
 | 
						|
	DECLARE @endDate DATETIME;
 | 
						|
		SET @endDate = CAST(@end AS DATE)
 | 
						|
 | 
						|
	DECLARE @startDatePlus DATETIME;
 | 
						|
		SET @startDatePlus = DATEADD(day,1,@startDate)
 | 
						|
 | 
						|
	DECLARE @endDatePlus DATETIME;
 | 
						|
		SET @endDatePlus = DATEADD(day,1,@endDate)
 | 
						|
 | 
						|
	DECLARE @sql nvarchar(MAX);
 | 
						|
	DECLARE @where nvarchar(MAX);
 | 
						|
 | 
						|
 | 
						|
	-- A Where feltételek extra elemei
 | 
						|
	SET @where =	N'
 | 
						|
						AND TOROLT = ''F''
 | 
						|
						AND C_INTEZMENYID = @intezmenyId
 | 
						|
						AND C_TANEVID = @tanevId';
 | 
						|
 | 
						|
	IF (@tanarId IS NOT NULL)
 | 
						|
		BEGIN
 | 
						|
			SET @where += N' AND C_TANARID = @tanarId';
 | 
						|
		END
 | 
						|
	
 | 
						|
	IF (@osztalyCsoportId IS NOT NULL)
 | 
						|
		BEGIN
 | 
						|
			SET @where += N' AND C_OSZTALYCSOPORTID = @osztalyCsoportId';
 | 
						|
		END
 | 
						|
	
 | 
						|
	IF (@hetirendId IS NOT NULL)
 | 
						|
		BEGIN
 | 
						|
			SET @where += N' AND C_HETIREND = @hetirendId';
 | 
						|
		END
 | 
						|
	
 | 
						|
	IF (@hetNapjaId IS NOT NULL)
 | 
						|
		BEGIN
 | 
						|
			SET @where += N' AND C_HETNAPJA = @hetNapjaId';
 | 
						|
		END
 | 
						|
	
 | 
						|
	IF (@oraszam IS NOT NULL)
 | 
						|
		BEGIN
 | 
						|
			SET @where += N' AND C_ORASZAM = @oraszam';
 | 
						|
		END
 | 
						|
 | 
						|
	
 | 
						|
	-- Azon elemek törlése, amik teljesen az idõszakban vannak (C_ORAERVENYESSEGKEZDETE >; C_ORAERVENYESSEGVEGE <)
 | 
						|
	SET @sql +=	N'
 | 
						|
					UPDATE T_ORARENDIORA 
 | 
						|
						SET TOROLT = ''T''
 | 
						|
					WHERE 
 | 
						|
							C_ORAERVENYESSEGKEZDETE >= ''@startDate''
 | 
						|
						AND C_ORAERVENYESSEGVEGE <= ''@endDatePlus''';
 | 
						|
	SET @sql += @where;
 | 
						|
 | 
						|
	-- Azon elemek zárásának beállítása, amik az idõszakban véget érnek (C_ORAERVENYESSEGKEZDETE <; C_ORAERVENYESSEGVEGE <)
 | 
						|
	SET @sql +=	N'
 | 
						|
					UPDATE T_ORARENDIORA 
 | 
						|
						SET C_ORAERVENYESSEGVEGE = ''@startDatePlus''
 | 
						|
					WHERE 
 | 
						|
							C_ORAERVENYESSEGKEZDETE <= ''@startDate''
 | 
						|
						AND C_ORAERVENYESSEGVEGE >= ''@startDate''
 | 
						|
						AND C_ORAERVENYESSEGVEGE <= ''@endDatePlus''';
 | 
						|
	SET @sql += @where;
 | 
						|
 | 
						|
	-- Azon elemek zárásának beállítása, amik az idõszakban kezdõdnek (C_ORAERVENYESSEGKEZDETE >; C_ORAERVENYESSEGVEGE >)
 | 
						|
	SET @sql +=	N'
 | 
						|
					UPDATE T_ORARENDIORA 
 | 
						|
						SET C_ORAERVENYESSEGKEZDETE = ''@endDate''
 | 
						|
					WHERE 
 | 
						|
							C_ORAERVENYESSEGKEZDETE >= ''@startDate''
 | 
						|
						AND C_ORAERVENYESSEGKEZDETE <= ''@endDate''
 | 
						|
						AND C_ORAERVENYESSEGVEGE > ''@endDatePlus''';
 | 
						|
	SET @sql += @where;
 | 
						|
 | 
						|
	-- Azon elemek szétszedése, amik átnyúlnak az idõszakon (C_ORAERVENYESSEGKEZDETE <; C_ORAERVENYESSEGVEGE >)
 | 
						|
	SET @sql +=	N'
 | 
						|
					INSERT INTO T_ORARENDIORA (
 | 
						|
						C_DIFFERENCIALT, C_DRAMA, C_HETIREND, C_HETNAPJA, C_IKTTANORA, C_IPRTANORA, C_KOOPERATIV, C_MERES, C_MINDENNAPOSTESTENEVELES, C_NEMSZAKRENDSZERUORA, C_NEMZETISEGIORA, C_ORASZAM,
 | 
						|
						C_SORSZAMOZANDO, C_TAMOPORA, C_TULORA, C_BONTOTT, C_ORAERVENYESSEGKEZDETE, C_ORAERVENYESSEGVEGE, C_PARHUZAMOSORA, C_TIOP12, C_ORAKEZDETE, C_ORAVEGE, C_TANORANKIVULIFOGLALKOZAS,
 | 
						|
						C_IMPORTALT, C_CSENGETESIRENDID, C_CSENGETESIRENDORAID, C_TEREMID, C_FOGLALKOZASID, C_TANTARGYID, C_OSZTALYCSOPORTID, C_TANARID, C_ORATULAJDONOSID, C_INTEZMENYID, C_TANEVID, 
 | 
						|
						TOROLT, SERIAL, C_ORARENDIORAGROUPID
 | 
						|
						)
 | 
						|
					SELECT 
 | 
						|
						C_DIFFERENCIALT, C_DRAMA, C_HETIREND, C_HETNAPJA, C_IKTTANORA, C_IPRTANORA, C_KOOPERATIV, C_MERES, C_MINDENNAPOSTESTENEVELES, C_NEMSZAKRENDSZERUORA, C_NEMZETISEGIORA, C_ORASZAM,
 | 
						|
						C_SORSZAMOZANDO, C_TAMOPORA, C_TULORA, C_BONTOTT, ''@endDate'', C_ORAERVENYESSEGVEGE, C_PARHUZAMOSORA, C_TIOP12, C_ORAKEZDETE, C_ORAVEGE, C_TANORANKIVULIFOGLALKOZAS,
 | 
						|
						C_IMPORTALT, C_CSENGETESIRENDID, C_CSENGETESIRENDORAID, C_TEREMID, C_FOGLALKOZASID, C_TANTARGYID, C_OSZTALYCSOPORTID, C_TANARID, C_ORATULAJDONOSID, C_INTEZMENYID, C_TANEVID, 
 | 
						|
						TOROLT, SERIAL, C_ORARENDIORAGROUPID
 | 
						|
					FROM T_ORARENDIORA 
 | 
						|
					WHERE 
 | 
						|
							C_ORAERVENYESSEGKEZDETE < ''@startDate''
 | 
						|
						AND C_ORAERVENYESSEGVEGE > ''@endDate''';
 | 
						|
	SET @sql += @where;
 | 
						|
 | 
						|
	SET @sql +=	N'
 | 
						|
					UPDATE T_ORARENDIORA 
 | 
						|
						SET C_ORAERVENYESSEGVEGE = ''@startDatePlus''
 | 
						|
					WHERE 
 | 
						|
							C_ORAERVENYESSEGKEZDETE < ''@startDate ''
 | 
						|
						AND C_ORAERVENYESSEGVEGE > ''@endDate''';
 | 
						|
	SET @sql += @where;
 | 
						|
 | 
						|
 | 
						|
    BEGIN TRANSACTION
 | 
						|
        exec sp_executesql @sql
 | 
						|
			  ,N'
 | 
						|
					@startDate			datetime,
 | 
						|
					@startDatePlus		datetime,
 | 
						|
					@endDate			datetime,
 | 
						|
					@endDatePlus		datetime,
 | 
						|
					@intezmenyId		int,
 | 
						|
					@tanevId			int,
 | 
						|
					@tanarId			int,
 | 
						|
					@osztalyCsoportId	int,
 | 
						|
					@hetirendId			int,
 | 
						|
					@hetNapjaId			int,
 | 
						|
					@oraszam			int
 | 
						|
					'
 | 
						|
			  ,@intezmenyId = @intezmenyId
 | 
						|
			  ,@tanevId = @tanevId
 | 
						|
			  ,@tanarId = @tanarId
 | 
						|
			  ,@osztalyCsoportId = @osztalyCsoportId
 | 
						|
			  ,@hetirendId = @hetirendId
 | 
						|
			  ,@hetNapjaId = @hetNapjaId
 | 
						|
			  ,@oraszam = @oraszam
 | 
						|
			  ,@startDate = @startDate
 | 
						|
			  ,@startDatePlus = @startDatePlus
 | 
						|
			  ,@endDate = @endDate
 | 
						|
			  ,@endDatePlus = @endDatePlus;
 | 
						|
    COMMIT TRANSACTION
 | 
						|
	END TRY
 | 
						|
	BEGIN CATCH
 | 
						|
	IF @@TRANCOUNT > 0 AND XACT_STATE() <> 0 
 | 
						|
		ROLLBACK TRAN;
 | 
						|
		THROW
 | 
						|
	END CATCH
 | 
						|
 | 
						|
 | 
						|
END
 | 
						|
GO |