如何在.NET中运行时确定SQL Server存储过程参数?

时间:2009-07-13 20:31:03

标签: .net sql sql-server

应用程序是否有办法在运行时确定存储过程的参数和参数类型?

3 个答案:

答案 0 :(得分:5)

ADO.Net具有此功能。你会想要使用

SqlCommandBuilder.DeriveParameters(mySqlCommand)

这将填充您的SqlCommand对象“mySqlCommand”,其中包含参数的名称和类型。但是,它确实需要额外调用数据库。

如果您在谷歌上搜索它们,网上会有一些演练。 4Guys有一个here

答案 1 :(得分:1)

不,但您可以从information_schema.parameters

获取

示例程序

create procedure prtest
@id int,
@name varchar(200),
@value decimal(20,10)
as
select 'bla'

go

现在运行此查询

select parameter_name,data_type,* from information_schema.parameters
where specific_name = 'prtest'
order by ordinal_position

输出

@id int
@name   varchar
@value  decimal

你仍然需要从CHARACTER_MAXIMUM_LENGTH,NUMERIC_PRECISION,NUMERIC_SCALE

获取尺寸

答案 2 :(得分:0)

是的,您可以使用DeriveParameters类的SqlCommandBuilder方法...

using (var conn = new SqlConnection(myConnectionString))
using (var cmd = new SqlCommand("dbo.MyStoredProc", conn))
{
    conn.Open();
    cmd.CommandType = System.Data.CommandType.StoredProcedure;
    SqlCommandBuilder.DeriveParameters(cmd);

    foreach (SqlParameter item in cmd.Parameters)
    {
        Console.WriteLine(item.ParameterName);
    }
}