我正在使用Microsoft SQL Server 2008。我有一个存储过程。有没有一个简单的查询可以执行,以给我参数名称?
我找到了这个链接,但它并不适用于Microsoft SQL Server 2008。
我正在使用Microsoft SQL Server 2008。我有一个存储过程。有没有一个简单的查询可以执行,以给我参数名称?
我找到了这个链接,但它并不适用于Microsoft 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')
请查看我的关于数据库文件和对象的博客。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
WHERE object_id = OBJECT_ID('YourProcedureName')
- Remus RusanuSELECT * FROM sys.parameters;
,但它返回0行。有什么想法吗? - user489041