2012-11-13 43 views
1

可能重複:
How can I retrieve a list of parameters from a stored procedure in SQL Server如何確定存儲過程是否需要參數?

我用海量來創建一個通用的存儲過程的執行者。基本上,我有一個函數,其中包含一個過程的名稱和可變數量的參數。然後,我盲目地嘗試使用傳遞的參數執行該存儲過程,並返回結果或處理錯誤。

我的問題是:有沒有一種方法可以讓我在調用存儲過程之前確定哪些參數?

+0

查看SQLMS中SP的定義。 – MoonKnight

+1

你看過sys.parameters在object_id上加入sys.procedures嗎? –

回答

5

試試這個:

SELECT 
    ProcedureName = pr.Name, 
    ParameterName = p.Name, 
    Typename = ty.name 
FROM 
    sys.parameters p 
INNER JOIN 
    sys.procedures pr ON p.object_id = pr.object_id 
INNER JOIN 
    sys.types ty ON p.user_type_id = ty.user_type_id 
WHERE 
    pr.Name = '.....' -- put your stored procedure name here 
ORDER BY 
    p.Name, p.parameter_id 

這將檢查系統目錄視圖,並顯示您的參數及其類型對於一個給定的程序。

系統目錄視圖包含其他信息(如參數是否有默認值,如果是,是什麼,是否是XML參數等) - 請檢查MSDN documentation for all details

+0

所以你的意思是我應該用大量的方法執行這個操作,並將結果展開成一個使用的列表,對吧? – xdumaine

+0

@roviuser:這個SQL查詢會爲你提供你所需要的信息 - 你如何獲得這個信息,完全取決於你... –

+0

+1你可能還會包含諸如參數'is_output'和可選參數('has_default_value' = 1)。如果TVP正在使用,'is_readonly'在2008+也可能有用。 –

相關問題