查找存储过程的参数名称

3

我正在使用Microsoft SQL Server 2008。我有一个存储过程。有没有一个简单的查询可以执行,以给我参数名称?

我找到了这个链接,但它并不适用于Microsoft SQL Server 2008。

3个回答

8

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

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') - Remus Rusanu
我遇到了一些问题。我将它更改为 SELECT * FROM sys.parameters;,但它返回0行。有什么想法吗? - user489041
@user489041 - 如果您从sys.parameters选择每个记录,而记录计数为0,则我会认为您在执行该查询的数据库中没有创建任何带参数的存储过程。 - Justin Helgerson
正确 - 您需要至少一个带参数的自定义存储过程才能在此表中有条目。 - Marek Kwiendacz

2

请查看我的关于数据库文件和对象的博客。http://craftydba.com/?p=2901

我在我的示例[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_sproc_columns。

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

两种方法都可以带你到达目的地。 enter image description here

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接