生成多个和过滤的Drop +创建存储过程

我有这个脚本:
select name,create_date,modify_date from sys.procedures order by modify_date desc
我可以看到最近修改了哪些程序。 我将添加“where modify_date> =” 我想使用一些系统存储过程,这将生成我: drop +为(比方说5个匹配)存储过程创建脚本 我能以某种方式这样做吗? 谢谢 好。我有最终版本: http://swooshcode.blogspot.com/2008/10/generate-stored-procedures-scripts-for.html 你们帮了很多忙 谢谢     
已邀请:
这不是很好,但它确实有效。手动运行它的输出或使用sp_executesql执行它。
SELECT OBJECT_DEFINITION(object_id), 'drop procedure [' + name + ']'
FROM   sys.procedures
WHERE modify_date >= @date
您还必须担心失去的权利。     
无需游标(根据需要修改模式等):
DECLARE @dt AS datetime
SET @dt = '10/1/2008'

DECLARE @sql AS varchar(max)

SELECT @sql = COALESCE(@sql, '')
    + '-- ' + o.name + CHAR(13) + CHAR(10)
    + 'DROP PROCEDURE ' + o.name + CHAR(13) + CHAR(10)
    + 'GO' + CHAR(13) + CHAR(10)
    + m.definition + CHAR(13) + CHAR(10)
    + 'GO' + CHAR(13) + CHAR(10)
FROM sys.sql_modules AS m
INNER JOIN sys.objects AS o
    ON m.object_id = o.object_id
INNER JOIN sys.procedures AS p
    ON m.object_id = p.object_id
WHERE p.modify_date >= @dt

PRINT @sql -- or EXEC (@sql)
    
您可以使用游标迭代每条记录:
DECLARE @spName NVARCHAR(128)
DECLARE myCursor CURSOR FOR SELECT name FROM sys.procedures ORDER BY modify_date DESC
OPEN myCursor
FETCH NEXT FROM myCursor INTO @spName
WHILE @@fetch_status = 0
BEGIN
    -- Process each stored procedure with a dynamic query
    PRINT @spName
FETCH NEXT FROM myCursor INTO @spName
END
CLOSE myCursor
DEALLOCATE myCursor
    
同时我做了一些挖掘,似乎
sp_helptext 'my_stored_procedure'
是我需要的,(当我问jdecuyper解释的问题时,我已经知道的那部分)     
这最好用比SQL更合适的语言来完成。尽管有许多扩展,例如T-SQL,PL / SQL和PL / pgSQL,但SQL并不是这项任务的最佳选择。 这是一个类似问题的链接,我的答案是使用SQL-DMO或SMO,具体取决于您是否拥有SQL 2000或2005。 如何使用c#复制数据库     

要回复问题请先登录注册