У меня возникает одна проблема, когда я пытаюсь получить выходное значение из хранимой процедуры SQL Server типа INT
, тогда я получаю значение NULL ☹.
Вот хранимая процедура:
CREATE PROCEDURE dbo.NULLISSUE
@input VARCHAR(10),
@output INT = 0 OUTPUT
AS
BEGIN
IF @input >= '1'
BEGIN
SET @output = @output + 1
RETURN(0)
END
END
Вот код .NET:
using (var connection = new SqlConnection(connectionString))
{
using (var command = new SqlCommand())
{
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "dbo.NULLISSUE";
command.Parameters.Clear();
command.Parameters.AddWithValue("@input", "1");
command.Parameters.AddWithValue("@output", SqlDbType.Int);
command.Parameters["@output"].Value = 0;
command.Parameters["@output"].Direction = ParameterDirection.Output;
command.CommandTimeout = 3000;
connection.Open();
command.ExecuteNonQuery();
connection.Close();
Console.WriteLine(command.Parameters["@output"].Value);
//null value ?
Console.ReadLine();
}
}
У меня есть исправление, выполнив ISNULL(@output, 0)
в процедуре, но я не уверен, почему это можно сделать на стороне .NET и почему ADO.NET не передает / устанавливает / инициализирует параметр OUTPUT = 0.
Заранее спасибо.