C # Отображение возвращаемого параметра в виде десятичного числа в метке - PullRequest
0 голосов
/ 24 октября 2018

Я использую возвращенный параметр для отображения веса корзины.

Вот моя хранимая процедура SQL Server;

ALTER PROCEDURE [dbo].[SumScrapBinWeight]
    @ScrapBinNumber INT,
    @ScrapBinWeightSUM DECIMAL(8,2) OUTPUT
AS 
BEGIN
    SELECT @ScrapBinWeightSUM = SUM(CalculatedWeightLbs) 
    FROM ScrapData 
    WHERE ScrapBinNumber = @ScrapBinNumber
END

Это работает в SSMS и возвращает ожидаемое значение,когда я вызываю это в своем приложении C #, я получаю сообщение об ошибке

Cast not Valid

в последней строке.Это поставило меня в тупик, если я изменил Decimal на Int, он не выдает ошибку, но не отображает десятичные дроби, которые я хочу показать.

using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MfgDataCollector"].ToString()))
{
    DynamicParameters param = new DynamicParameters();
    param.Add("@ScrapBinNumber", lbl_TicketNumber.Text);
    param.Add("@ScrapBinWeightSUM", dbType: DbType.Int32, direction: ParameterDirection.Output);

    conn.Execute("SumScrapBinWeight", param, commandType: CommandType.StoredProcedure);

    lbl_BinWeight.Text = param.Get<decimal>("@ScrapBinWeightSUM").ToString();
}

Где я здесь ошибаюсь?

1 Ответ

0 голосов
/ 24 октября 2018

Проблема в том, как вы настроили параметр в своем .NET-коде:

// Note DbType.Int32
param.Add("@ScrapBinWeightSUM", dbType: DbType.Int32, direction: ParameterDirection.Output);

Вам просто нужно указать соответствующий тип данных:

// Note DbType.Decimal
param.Add("@ScrapBinWeightSUM", dbType: DbType.Decimal, direction: ParameterDirection.Output);
...