2010-03-15 9 views

Respuesta

8

Esto funciona para 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) 
+0

Funciona muy bien! – Kate

+0

cosas buenas. Tal vez sería un poco mejor usar la función QUOTENAME en lugar de concatenar, ¡pero me alegro de que funcione! –

0

La manera en que siempre tienden a hacer este tipo de cosas se acaba de extraer los procedimientos de la lista de las tablas del sistema usando mi critierion y luego crear la lista de comandos - ya sea directa en sql, por ejemplo SELECT 'DROP PROCEDURE ' + procName FROM system_procedures_table WHERE procName like... o en Excel.

1

Puede generar el DDL consultando el diccionario de datos. Por ejemplo, en Oracle:

SELECT 'DROP PROCEDURE "'||owner||'"."'||object_name||'";' 
FROM all_procedures 
WHERE procedure_name IS NULL 
AND lower(object_name) LIKE 'somename_%'; 
+0

Gracias, pero uso MS SQL – Kate

+0

Lo siento, debería haberlo sabido. –

0

En MS_Sql-servidor cn crear una declaración con todos los procedimientos pertinentes para caer a través de (ab) utilizando el "para la ruta XML ('')" cláusula ...

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
+0

Tenga en cuenta que [las respuestas solo de enlace] (http://meta.stackoverflow.com/tags/link-only-answers/info) no se recomiendan, las respuestas SO deberían ser el punto final de una búsqueda de una solución (vs. otra escala más de referencias, que tienden a quedar obsoletas en el tiempo). Considere agregar una sinopsis independiente aquí, manteniendo el enlace como referencia. – kleopatra

Cuestiones relacionadas