Выходные параметры запросов
Параметры, которые используются в командах, могут быть нескольких типов. Тип параметра задается с помощью свойства 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);
Достарыңызбен бөлісу: |