This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,8 @@
CREATE TABLE [dev].[VersionInfoSPFN](
Id int identity(1,1) PRIMARY KEY,
Name nvarchar(255),
IsProcedure bit,
IsSchemaUpdated bit,
RegisteredAt datetime
);
GO

View file

@ -0,0 +1,98 @@
-- =============================================
-- Description: a dbo sémában lévõ nem globális tárolt eljárások frissítése az intézményi sémákba
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.sp_Global_CreateSchemaStoredProcedures') IS NOT NULL BEGIN
DROP PROCEDURE [dbo].[sp_Global_CreateSchemaStoredProcedures]
END
GO
CREATE PROCEDURE [dbo].[sp_Global_CreateSchemaStoredProcedures]
@pSchemaName NVARCHAR(100), -- pl: 'KR_BEDO_Schema' | NULL esetén az összes sémán végigmegy
@pStoredProcedureNames XML -- pl: '<StoredProcedureNames><StoredProcedureName>sp_GetOrarend</StoredProcedureName></StoredProcedureNames>' | NULL esetén az összes nem globális tárolt eljáráson végigmegy
AS
BEGIN
DECLARE @objectId INT
DECLARE @storedProcedureName NVARCHAR(4000)
DECLARE @storedProcedureDefinition NVARCHAR(MAX)
DECLARE @schemaName NVARCHAR(100)
DECLARE @deleteStoredProcedureSQL NVARCHAR(4000)
DECLARE @createStoredProcedureSQL NVARCHAR(MAX)
DECLARE @schemaNames CURSOR
IF @pSchemaName IS NOT NULL
SET @schemaNames = CURSOR LOCAL FOR
SELECT @pSchemaName
ELSE
SET @schemaNames = CURSOR LOCAL FOR
SELECT name FROM sys.schemas s
INNER join T_INTEZMENY i ON 'KR_' + i.C_AZONOSITO + '_schema' = s.name
WHERE principal_id = 1 AND name LIKE 'KR[_]%[_]Schema'
ORDER BY name
DECLARE @storedProcedures CURSOR
IF @pStoredProcedureNames IS NOT NULL
SET @storedProcedures = CURSOR LOCAL FOR
SELECT p.object_id, p.name, m.Definition
FROM sys.procedures p
INNER JOIN sys.sql_modules m ON p.object_id = m.object_id
INNER JOIN sys.schemas s ON s.schema_id = p.schema_id
WHERE
s.name ='dbo'
AND p.name IN (SELECT DISTINCT StoredProcedureName.value('(.)[1]', 'varchar(100)') FROM @pStoredProcedureNames.nodes('StoredProcedureNames/StoredProcedureName') AS StoredProcedureNames(StoredProcedureName))
ORDER BY p.name
ELSE
SET @storedProcedures = CURSOR LOCAL FOR
SELECT p.object_id, p.name, m.Definition
FROM sys.procedures p
INNER JOIN sys.sql_modules m ON p.object_id = m.object_id
INNER JOIN sys.schemas s ON s.schema_id = p.schema_id
WHERE s.name ='dbo' AND p.name NOT LIKE 'sp_Global_%'
ORDER BY p.name
OPEN @storedProcedures
FETCH NEXT FROM @storedProcedures INTO @objectId, @storedProcedureName, @storedProcedureDefinition
WHILE @@FETCH_STATUS = 0 BEGIN
IF OBJECT_ID(@objectId) IS NULL BEGIN
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, 'dbo.fn','#schemaName#.fn')
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, 'dbo.[fn','#schemaName#.[fn')
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, '[dbo].fn','#schemaName#.fn')
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, '[dbo].[fn','#schemaName#.[fn')
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, 'dbo.','')
SET @storedProcedureDefinition = REPLACE(@storedProcedureDefinition, '[dbo].','')
OPEN @schemaNames
FETCH NEXT FROM @schemaNames INTO @schemaName
WHILE @@FETCH_STATUS = 0 BEGIN
SET @createStoredProcedureSQL = REPLACE(@storedProcedureDefinition, 'CREATE PROCEDURE ','CREATE OR ALTER PROCEDURE [' + @schemaName + '].')
SET @createStoredProcedureSQL = REPLACE(@createStoredProcedureSQL, '#schemaName#.fn','[' + @schemaName + '].fn')
SET @createStoredProcedureSQL = REPLACE(@createStoredProcedureSQL, '#schemaName#.[fn','[' + @schemaName + '].[fn')
PRINT CAST(@objectId AS VARCHAR(10)) + ' ' + @storedProcedureName + ' ' + @schemaName
EXEC sp_executesql @createStoredProcedureSQL
FETCH NEXT FROM @schemaNames INTO @schemaName
END
CLOSE @schemaNames
END
FETCH NEXT FROM @storedProcedures INTO @objectId, @storedProcedureName, @storedProcedureDefinition
END
CLOSE @storedProcedures
DEALLOCATE @storedProcedures
DEALLOCATE @schemaNames
END

View file

@ -0,0 +1,16 @@
CREATE OR ALTER PROCEDURE [dev].[uspRegisterSPFN]
@spFnName nvarchar(255),
@IsProcedure bit
AS
BEGIN
SET NOCOUNT ON;
UPDATE VersionInfoSPFN SET
RegisteredAt = GETDATE()
WHERE Name = @spFnName AND IsSchemaUpdated = 0
IF @@ROWCOUNT = 0 BEGIN
INSERT INTO VersionInfoSPFN (Name, IsProcedure, IsSchemaUpdated, RegisteredAt) VALUES
(@spFnName, @IsProcedure, 0, GETDATE());
END
END
GO

View file

@ -0,0 +1,34 @@
CREATE OR ALTER PROCEDURE [dev].[uspSchemaUpdateRegisteredSPFN]
AS
BEGIN
SET NOCOUNT ON;
DECLARE CursorSPFN CURSOR LOCAL FOR
SELECT Name
FROM [dev].[VersionInfoSPFN]
WHERE IsSchemaUpdated = 0
ORDER BY IsProcedure, RegisteredAt
FOR UPDATE OF IsSchemaUpdated
DECLARE @name nvarchar(255)
OPEN CursorSPFN
FETCH NEXT FROM CursorSPFN INTO @name
WHILE @@FETCH_STATUS = 0 BEGIN
EXEC dev.uspCreateSchemaSPFN @name
UPDATE [dev].[VersionInfoSPFN] SET
IsSchemaUpdated = 1
WHERE CURRENT OF CursorSPFN
FETCH NEXT FROM CursorSPFN INTO @name
END
CLOSE CursorSPFN
DEALLOCATE CursorSPFN
END
GO