126 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
--------------------
 | 
						|
 | 
						|
CREATE PROCEDURE [dbo].[sp_AddNewSchemaViews]
 | 
						|
		@IntezmenyId int,
 | 
						|
		@IntezmenyAzonosito nvarchar(30),
 | 
						|
		@TanevId int
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
 | 
						|
DECLARE @IntezmenyTemplate nvarchar(50) = 'KR_'+@IntezmenyAzonosito
 | 
						|
DECLARE @Schema nvarchar(50) = @IntezmenyTemplate+'_Schema'
 | 
						|
DECLARE @SchemaUser nvarchar(50) = @IntezmenyTemplate + '_user'
 | 
						|
DECLARE @AktivTanev nvarchar(500)
 | 
						|
DECLARE @Sql nvarchar(max)
 | 
						|
 | 
						|
 | 
						|
/*============================================================================*/
 | 
						|
/* View : T_DOKUMENTUMELEMISZINT                                                  */
 | 
						|
/*============================================================================*/
 | 
						|
/* Package: Kreta */
 | 
						|
IF OBJECT_ID('['+@Schema+'].T_DOKUMENTUMELEMISZINT', 'V') IS NOT NULL BEGIN
 | 
						|
    SET @Sql = N'EXEC sp_refreshview ''['+@Schema+'].T_DOKUMENTUMELEMISZINT'''
 | 
						|
    EXEC sp_executesql @Sql
 | 
						|
 | 
						|
    IF OBJECT_ID('['+@Schema+'].T_DOKUMENTUMELEMISZINT_OSSZES', 'V') IS NOT NULL BEGIN
 | 
						|
        SET @Sql = N'EXEC sp_refreshview ''['+@Schema+'].T_DOKUMENTUMELEMISZINT_OSSZES'''
 | 
						|
        EXEC sp_executesql @Sql
 | 
						|
    END
 | 
						|
END
 | 
						|
ELSE BEGIN
 | 
						|
    /* Ha nem létezik a view, akkor létrehozzuk */
 | 
						|
    IF (SELECT COUNT(1)
 | 
						|
            FROM INFORMATION_SCHEMA.COLUMNS
 | 
						|
            WHERE TABLE_NAME = N'T_DOKUMENTUMELEMISZINT' AND TABLE_SCHEMA = 'dbo' AND COLUMN_NAME = 'C_ALTANEVID' 
 | 
						|
            ) > 0
 | 
						|
    BEGIN
 | 
						|
        SET @AktivTanev = N' C_ALTANEVID = '+ CAST(@TanevId as nvarchar) +' AND '
 | 
						|
    END
 | 
						|
    ELSE 
 | 
						|
    BEGIN
 | 
						|
        SET @AktivTanev = N''
 | 
						|
    END
 | 
						|
 | 
						|
    IF (SELECT COUNT(1)
 | 
						|
            FROM INFORMATION_SCHEMA.COLUMNS
 | 
						|
            WHERE TABLE_NAME = N'T_DOKUMENTUMELEMISZINT' AND TABLE_SCHEMA = 'dbo' AND COLUMN_NAME = 'C_ALINTEZMENYID' 
 | 
						|
            ) > 0
 | 
						|
    BEGIN
 | 
						|
        /* T_DOKUMENTUMELEMISZINT */
 | 
						|
        SET @Sql = N'CREATE VIEW ['+@Schema+'].T_DOKUMENTUMELEMISZINT
 | 
						|
        AS
 | 
						|
        SELECT *
 | 
						|
        FROM dbo.T_DOKUMENTUMELEMISZINT
 | 
						|
        WHERE '+@AktivTanev+' (TOROLT = ''F'') AND C_ALINTEZMENYID = '+CAST(@IntezmenyId as nvarchar)
 | 
						|
        EXECUTE sp_executesql @Sql
 | 
						|
 | 
						|
        /* T_DOKUMENTUMELEMISZINT_OSSZES */
 | 
						|
        SET @Sql = N'CREATE VIEW ['+@Schema+'].T_DOKUMENTUMELEMISZINT_OSSZES
 | 
						|
        AS
 | 
						|
        SELECT *
 | 
						|
        FROM dbo.T_DOKUMENTUMELEMISZINT
 | 
						|
        WHERE C_ALINTEZMENYID = '+CAST(@IntezmenyId as nvarchar)
 | 
						|
        EXECUTE sp_executesql @Sql
 | 
						|
    END
 | 
						|
    ELSE 
 | 
						|
    BEGIN
 | 
						|
        /* T_DOKUMENTUMELEMISZINT */
 | 
						|
        SET @Sql = N'CREATE VIEW ['+@Schema+'].T_DOKUMENTUMELEMISZINT
 | 
						|
        AS
 | 
						|
        SELECT *
 | 
						|
        FROM dbo.T_DOKUMENTUMELEMISZINT
 | 
						|
        WHERE '+@AktivTanev+' (TOROLT = ''F'')'
 | 
						|
        EXECUTE sp_executesql @Sql
 | 
						|
 | 
						|
        /* T_DOKUMENTUMELEMISZINT_OSSZES */
 | 
						|
        SET @Sql = N'CREATE VIEW ['+@Schema+'].T_DOKUMENTUMELEMISZINT_OSSZES
 | 
						|
        AS
 | 
						|
        SELECT *
 | 
						|
        FROM dbo.T_DOKUMENTUMELEMISZINT'
 | 
						|
        EXECUTE sp_executesql @Sql
 | 
						|
    END
 | 
						|
END
 | 
						|
 | 
						|
 | 
						|
 | 
						|
END
 | 
						|
 | 
						|
GO
 | 
						|
 | 
						|
 | 
						|
--------------------
 | 
						|
 | 
						|
 | 
						|
DECLARE intezmenytanevekCursor CURSOR LOCAL FOR 
 | 
						|
	SELECT T_INTEZMENY.ID, T_INTEZMENY.C_AZONOSITO, T_TANEV.ID
 | 
						|
		FROM T_INTEZMENY
 | 
						|
		INNER JOIN T_TANEV ON T_TANEV.C_INTEZMENYID = T_INTEZMENY.ID
 | 
						|
		WHERE T_TANEV.C_AKTIV = 'T' AND T_INTEZMENY.TOROLT = 'F'
 | 
						|
		ORDER BY T_INTEZMENY.ID
 | 
						|
 | 
						|
DECLARE @intezmenyId int, @intezmenyAzonosito nvarchar(30), @tanevId int
 | 
						|
 | 
						|
OPEN intezmenytanevekCursor  
 | 
						|
FETCH NEXT FROM intezmenytanevekCursor INTO @intezmenyId, @intezmenyAzonosito, @tanevId
 | 
						|
 | 
						|
WHILE @@FETCH_STATUS = 0 
 | 
						|
BEGIN  
 | 
						|
	PRINT 'INTÉZMÉNY ID: ' + CAST(@intezmenyId AS NVARCHAR(10)) + ', INTÉZMÉNY AZONOSÍTÓ: ' + CAST(@intezmenyAzonosito AS NVARCHAR(30)) + ', TANÉV ID: ' + CAST(@tanevId AS NVARCHAR(10))
 | 
						|
    EXEC sp_AddNewSchemaViews @IntezmenyId = @intezmenyId, @IntezmenyAzonosito = @intezmenyAzonosito, @TanevId = @tanevId
 | 
						|
 | 
						|
	FETCH NEXT FROM intezmenytanevekCursor INTO @intezmenyId, @intezmenyAzonosito, @tanevId
 | 
						|
END  
 | 
						|
 | 
						|
CLOSE intezmenytanevekCursor  
 | 
						|
DEALLOCATE intezmenytanevekCursor 
 | 
						|
 | 
						|
GO
 | 
						|
 | 
						|
 | 
						|
--------------------
 | 
						|
 | 
						|
 | 
						|
DROP PROCEDURE [dbo].[sp_AddNewSchemaViews]
 | 
						|
GO
 | 
						|
 |