2011-09-09 90 views
3

我正在使用Microsoft SQL Server 2008.我有一個存儲過程。有沒有一個簡單的查詢,我可以執行,會給我參數名稱?查找存儲過程的參數名稱

我發現這個Link但它不是爲Microsoft SQL Server 2008

回答

7

爲了讓名字只有你可以使用此查詢:

SELECT name 
FROM sys.parameters 
WHERE object_id = OBJECT_ID('YourProcedureName') 

爲了獲得更詳細的信息(名稱,類型和參數的長度):

SELECT p.name AS ParameterName, t.name AS ParameterType, p.max_length AS ParameterLength 
FROM sys.parameters AS p 
JOIN sys.types AS t ON t.user_type_id = p.user_type_id 
WHERE object_id = OBJECT_ID('YourProcedureName') 
+1

'WHERE OBJECT_ID = OBJECT_ID( 'YourProcedureName')' –

+0

我有這樣一些問題。我改變它說'SELECT * FROM sys.parameters;'但它返回0行。有任何想法嗎? – user489041

+0

@ user489041 - 如果您從sys.parameters中選擇每條記錄,並且您的記錄計數爲0,那會導致我相信您沒有任何存儲過程,並且在您執行該查詢時在數據庫中創建*參數。 –

2

看看我博客上的數據庫文件和對象。 http://craftydba.com/?p=2901

我有我的樣本[數學]數據庫稱爲SP_STORE_PRIMES的存儲過程。

一種方法是使用sys.parameters表。這可以選擇性地加入到類型中。下面加入sys.objects。

-- Parameters to SP & FN 
select o.name, p.* from sys.parameters p join sys.objects o 
on p.object_id = o.object_id where is_ms_shipped = 0 
go 

enter image description here

甲舊系統存儲過程是sp_sproc_columns。

-- Older system stored proc - show all parameters to one 
sp_sproc_columns @procedure_name = 'SP_STORE_PRIMES' 
go 

這兩種方式都會讓你想去的地方。

enter image description here