2010-03-26 72 views
15

我想要获取t-sql中存储过程的列表。我正在使用该行:使用t-sql检索存储过程的过滤列表

exec sys.sp_stored_procedures; 

我想过滤回结果,所以我只得到用户创建的存储过程。我想过滤掉sp_ *,dt_ *,fn_ *,xp_ *以及其他所有其他系统存储过程,这些对我没有任何兴趣。我怎样操纵返回的结果集?

使用Sql Server 2008 express。

解决!下面是我用什么:

SELECT name FROM sys.procedures 
WHERE [type] = 'P' 
AND name NOT LIKE 'sp_%' 
AND name NOT LIKE 'dt_%' 
ORDER BY name ASC; 
+0

这个问题的标题的解决方案不匹配,可以在标题是编辑为'如何列出存储过程'? –

+0

我同意,标题是可怕的。我已经更新了它。 – DanDan

回答

15

而不是使用存储过程,你可以使用下面的观点:

Select * From sys.procedures 
Where [Type] = 'P' 

Select * From Information_Schema.Routines 
+0

谢谢!我会把完整的解决方案放回到我的问题中。 – DanDan

2

sysobjects table选择项目和使用where子句type = 'P'name存储过程和过滤器。

1
SELECT [Routine_Name] 
FROM [INFORMATION_SCHEMA].[ROUTINES] 
WHERE [ROUTINE_TYPE] = 'PROCEDURE'