-- ============================================= -- 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: 'sp_GetOrarend' 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