2011-09-09 15 views
3

Microsoft SQL Server 2008を使用しています。ストアドプロシージャがあります。私にパラメータ名を与えることができる簡単なクエリがありますか?ストアドプロシージャのパラメータ名を見つける

私はこのLinkを発見したが、それは名前だけでこのクエリを使用することができます取得するには、マイクロソフトの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

サンプル[MATH]データベースにSP_STORE_PRIMESという名前のストアドプロシージャがあります。

1つの方法は、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

関連する問題