2010-03-26 63 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'