Как определить параметры хранимых процедур SQL Server во время выполнения в .NET? - PullRequest
4 голосов
/ 14 июля 2009

Может ли приложение определить параметры и типы параметров хранимой процедуры во время выполнения?

Ответы [ 3 ]

5 голосов
/ 14 июля 2009

ADO.Net имеет эту функцию. Вы хотите использовать

SqlCommandBuilder.DeriveParameters(mySqlCommand)

Это заполнит ваш SqlCommand объект mySqlCommand именем и типом параметров. Однако для этого требуется дополнительный вызов в базу данных.

В Интернете есть несколько пошаговых руководств, если вы поищете их в Google. У 4Guys есть один здесь .

1 голос
/ 14 июля 2009

нет, но вы можете получить его из 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

0 голосов
/ 14 июля 2009

Да, вы можете использовать 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...