应用程序是否有办法在运行时确定存储过程的参数和参数类型?
答案 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);
}
}