kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20170327110702_Init/sp_Global_DeleteStoredProcedures.sql
2024-03-13 00:33:46 +01:00

67 lines
2 KiB
Transact-SQL

-- =============================================
-- Description: a megadott tárolt eljárások törlése a megadott vagy összes sémában
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.sp_Global_DeleteStoredProcedures') IS NOT NULL BEGIN
DROP PROCEDURE [dbo].[sp_Global_DeleteStoredProcedures]
END
GO
CREATE PROCEDURE [dbo].[sp_Global_DeleteStoredProcedures]
@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>'
AS
BEGIN
DECLARE @storedProcedureName NVARCHAR(4000)
DECLARE @schemaName NVARCHAR(100)
DECLARE @deleteStoredProcedureSQL NVARCHAR(4000)
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
WHERE principal_id = 1
ORDER BY name
DECLARE @storedProcedures CURSOR
SET @storedProcedures = CURSOR LOCAL FOR
SELECT DISTINCT StoredProcedureName.value('(.)[1]', 'varchar(100)') FROM @pStoredProcedureNames.nodes('StoredProcedureNames/StoredProcedureName') AS StoredProcedureNames(StoredProcedureName)
OPEN @storedProcedures
FETCH NEXT FROM @storedProcedures INTO @storedProcedureName
WHILE @@FETCH_STATUS = 0 BEGIN
OPEN @schemaNames
FETCH NEXT FROM @schemaNames INTO @schemaName
WHILE @@FETCH_STATUS = 0 BEGIN
SET @deleteStoredProcedureSQL = 'IF OBJECT_ID(''[' + @schemaName + '].' + @storedProcedureName + ''') IS NOT NULL
DROP PROCEDURE [' + @schemaName + '].' + @storedProcedureName
PRINT @storedProcedureName + ' ' + @schemaName
EXEC sp_executesql @deleteStoredProcedureSQL
FETCH NEXT FROM @schemaNames INTO @schemaName
END
CLOSE @schemaNames
FETCH NEXT FROM @storedProcedures INTO @storedProcedureName
END
CLOSE @storedProcedures
DEALLOCATE @storedProcedures
DEALLOCATE @schemaNames
END