Database 查找存储过程的参数名

Database 查找存储过程的参数名,database,sql-server-2008,stored-procedures,Database,Sql Server 2008,Stored Procedures,我正在使用Microsoft SQL Server 2008。我有一个存储过程。我是否可以执行一个简单的查询来提供参数名 我已找到此项,但它不适用于Microsoft SQL Server 2008。要仅获取名称,您可以使用此查询: SELECT name FROM sys.parameters WHERE object_id = OBJECT_ID('YourProcedureName') 要获取更详细的信息(参数的名称、类型和长度),请执行以下操作: 除了Marek所说的,您还可以使用.N

我正在使用Microsoft SQL Server 2008。我有一个存储过程。我是否可以执行一个简单的查询来提供参数名


我已找到此项,但它不适用于Microsoft SQL Server 2008。

要仅获取名称,您可以使用此查询:

SELECT name
FROM sys.parameters
WHERE object_id = OBJECT_ID('YourProcedureName')
要获取更详细的信息(参数的名称、类型和长度),请执行以下操作:


除了Marek所说的,您还可以使用.NET库中的DeriveParameters方法以编程方式检索它们:

查看我关于数据库文件和对象的博客

我在示例[MATH]数据库中有一个名为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

较旧的系统存储过程是sp_存储过程_列

-- Older system stored proc - show all parameters to one
sp_sproc_columns @procedure_name = 'SP_STORE_PRIMES'
go
这两种方式都能让你到达你想去的地方


其中object\u id=object\u id('YourProcedureName')
我对此有一些问题。我把它改成了
SELECT*fromsys.parameters但它返回0行。有什么想法吗?@user489041-如果您从sys.parameters中选择每条记录,并且记录计数为0,这会让我相信您在执行该查询的数据库中没有创建任何带有参数的存储过程。对-您至少需要一个带有参数的自定义存储过程才能在此表中包含条目
-- Older system stored proc - show all parameters to one
sp_sproc_columns @procedure_name = 'SP_STORE_PRIMES'
go