我想对数据库中的每个存储过程使用EXEC sp_helptext。
所以我想使用EXEC sp_stored_procedures并从中检索PROCEDURE_NAME以执行:EXEC sp_helptext PROCEDURE_NAME 循环。
任何帮助都将深表感谢。
答案 0 :(得分:0)
select 'PRINT ''SET QUOTED_IDENTIFIER ' + case uses_quoted_identifier when 1 then 'ON''' else 'OFF' + '''' end + char(13) + char(10)
+ 'PRINT ''GO ''' + char(13) + char(10)
+ 'PRINT ''SET ANSI_NULLS ' + case uses_ansi_nulls when 1 then 'ON''' else 'OFF' + '''' end + char(13) + char(10)
+ 'PRINT ''GO ''' + char(13) + char(10)
+ 'GO'
+ char(13) + char(10) + 'sp_helptext ' + o.name + char(13) + char(10) + 'GO' + char(13) + char(10)
+ 'PRINT ''GO ''' + char(13) + char(10)
FROM sys.all_sql_modules AS m
JOIN sys.all_objects AS o
ON m.Object_ID = o.Object_ID
JOIN sys.schemas AS s
ON o.schema_id = s.schema_id
WHERE o.is_ms_shipped=0
------------------------------------------------------
-- custom filters below
------------------------------------------------------
and o.type = 'SP'
因此,开头的所有其他内容都是因为sp_helptext还没有将ansi nulls或带引号的标识符设置为特别是什么。该脚本将创建一个可以满足您需求的脚本。
答案 1 :(得分:0)
无需为每个proc调用sp_helptext,您可以在一个查询中获取所有内容:
select sm.definition
from sys.sql_modules sm
inner join sys.objects o on o.object_id = sm.object_id
where o.type = 'P'