Microsoft SQL Server 2008を使用しています。ストアドプロシージャがあります。私にパラメータ名を与えることができる簡単なクエリがありますか?ストアドプロシージャのパラメータ名を見つける
私はこのLinkを発見したが、それは名前だけでこのクエリを使用することができます取得するには、マイクロソフトのSQL Serverの2008
Microsoft SQL Server 2008を使用しています。ストアドプロシージャがあります。私にパラメータ名を与えることができる簡単なクエリがありますか?ストアドプロシージャのパラメータ名を見つける
私はこのLinkを発見したが、それは名前だけでこのクエリを使用することができます取得するには、マイクロソフトのSQL Serverの2008
ではありません。
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')
、あなたはまた、.NETライブラリでDeriveParametersメソッドを使用してプログラム的にそれらを取得することができます:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommandbuilder.deriveparameters.aspx
データベースファイルとオブジェクトに関するブログをご覧ください。 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
古いシステムストアドプロシージャは、sp_sproc_columnsあります。
-- Older system stored proc - show all parameters to one
sp_sproc_columns @procedure_name = 'SP_STORE_PRIMES'
go
どちらの方法でも行きたいところが得られます。
'WHERE OBJECT_ID = OBJECT_ID( 'YourProcedureName')' –
は、私はこれでいくつかの問題を抱えています。私はそれを 'SELECT * FROM sys.parameters;'と変更しましたが、0行を返します。何か案は? – user489041
@ user489041 - sys.parametersからすべてのレコードを選択し、レコード数が0の場合、そのクエリを実行しているデータベース*に作成されたパラメータを持つストアドプロシージャがないと思うでしょう。 –