Группа отбрасывания хранимых процедур по имени

У меня есть группа хранимых процедур с именами как 'somename _ %'. Есть ли любой способ удалить тот SP с одним запросом, forexample

DROP PROCEDURE, где имя как 'somename _ %'

.

9
задан Kate 19 January 2018 в 13:24
поделиться

4 ответа

Это работает для MSSQL 2005 +

DECLARE @DropScript varchar(max)
set @DropScript = ''

SELECT @DropScript = @DropScript + 'DROP PROCEDURE [' + schema_name(schema_id)+ '].' + '[' + name + ']
' FROM sys.procedures
where name like 'somename_%'


exec (@DropScript)
12
ответ дан 4 December 2019 в 14:28
поделиться

Я всегда делаю подобные вещи, просто извлекаю процедуры списка из системных таблиц, используя мой критерий, а затем создаю список команд - либо прямо в sql, например ВЫБЕРИТЕ 'DROP PROCEDURE' + procName FROM system_procedures_table WHERE procName как ... или в Excel.

0
ответ дан 4 December 2019 в 14:28
поделиться

В MS_Sql-Server вы можете создать оператор со всеми соответствующими процедурами для перетаскивания через (ab), используя предложение «FOR XML PATH ('')» ...

BEGIN TRANSACTION;
GO
CREATE PROC Test_1  AS
BEGIN;
  PRINT '1'
END;
GO
CREATE PROC Test_2  AS
BEGIN;
  PRINT '2'
END;
GO
SELECT * FROM sys.objects WHERE name LIKE 'Test%'  AND   TYPE = 'P';
DECLARE @Stmt NVARCHAR(MAX);
SET @Stmt = ( SELECT 'DROP PROC ' + STUFF (x.Stmt, 1, 2, SPACE(0))
              FROM  (SELECT ', ' + SCHEMA_NAME(Obj.Schema_ID) + CHAR(46) + Obj.Name
                     FROM   sys.objects AS Obj
                     WHERE  Obj.name LIKE 'Test%' 
                      AND   obj.TYPE = 'P'
                     FOR XML PATH ('')
                    ) AS X (Stmt)
            );
SELECT @Stmt;
EXEC sp_ExecuteSQL @Stmt;
SELECT * FROM sys.objects WHERE name LIKE 'Test%'  AND   TYPE = 'P';
ROLLBACK;
0
ответ дан 4 December 2019 в 14:28
поделиться

Вы можете сгенерировать DDL, запросив словарь данных. Например, в Oracle:

SELECT 'DROP PROCEDURE "'||owner||'"."'||object_name||'";'
FROM all_procedures
WHERE procedure_name IS NULL
AND lower(object_name) LIKE 'somename_%';
2
ответ дан 4 December 2019 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: