Выходные параметры запросов

Данное руководство устарело. Актуальное руководство: по ADO.NET и работе с базами данных в .NET 6

Последнее обновление: 31.10.2015

Параметры, которые используются в командах, могут быть нескольких типов. Тип параметра задается с помощью свойства Direction объкта SqlParameter. Данное свойство принимает одно из значений перечисления ParameterDirection:

  • Input: параметр является входным, то есть предназначен для передачи значений в sql-выражение запроса. Это значение по умолчанию для всех параметров

  • InputOutput: параметр может быть как входным, так и выходным.

  • Output: параметр является выходным, то есть используется для возвращения запросом каких-либо значений

  • ReturnValue: параметр представляет результат выполнения выражения или хранимой процедуры

Используем выходные параметры для возвращения id строки, которая была добавлена:

string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True";
int age = 23;
string name = "Kenny";
string sqlExpression = "INSERT INTO Users (Name, Age) VALUES (@name, @age);SET @id=SCOPE_IDENTITY()";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    SqlCommand command = new SqlCommand(sqlExpression, connection);
	// создаем параметр для имени
    SqlParameter nameParam = new SqlParameter("@name", name);
	// добавляем параметр к команде
    command.Parameters.Add(nameParam);
	// создаем параметр для возраста
	SqlParameter ageParam = new SqlParameter("@age", age);
	// добавляем параметр к команде
    command.Parameters.Add(ageParam);
	// параметр для id
	SqlParameter idParam = new SqlParameter
    {
        ParameterName = "@id",
        SqlDbType = SqlDbType.Int,
        Direction = ParameterDirection.Output // параметр выходной
    };
    command.Parameters.Add(idParam);
	
	command.ExecuteNonQuery();
	
     // получим значения выходного параметра
    Console.WriteLine("Id нового объекта: {0}", idParam.Value);
}

Здесь к sql-выражению добавляется операция присвоения параметру id идентификатора добавленной строки: SET @id=SCOPE_IDENTITY(). Для определения параметра используются его свойства. ParameterName задает имя параметра, SqlDbType указывает на тип параметра, а свойство Direction определяет тип параметра.

После выполнения команды параметр получает значение, которое мы можем получить через его свойство Value:

Console.WriteLine("Id нового объекта: {0}", idParam.Value);
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850