67 lines
2 KiB
Transact-SQL
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
|
|
|