Home:ALL Converter>precision problem on decimal DbParameter

precision problem on decimal DbParameter

Ask Time:2009-02-05T08:41:49         Author:Adam Right

Json Formatter

In c#, I use a decimal out DbParameter for a Sql Server stored procedure. I create parameter like that


DbParameter prm = comm.CreateParameter();

prm.ParameterName = "@Price";

prm.DbType = DbType.Decimal;

prm.Direction = ParameterDirection.Output;

comm.Parameters.Add(prm);

//and set the value of comm.Parameters["@Price"] to a variable,

decimal.TryParse(comm.Parameters["@Price"].Value.ToString(), 
  out this.ProdPrice);

But the value of the out parameter is allways rounded.

If i call the same stored procedure from Sql Server Management Studio, i can get this out parameter properly with it's precision

There is not a precision or scale properties on DbParameter. And i have to use DbParameter on System.Data.Common namespace for fetching the data

How can i being able to retieve decimal value with its full precision

Thanks in advance...

Author:Adam Right,eproduced under the CC 4.0 BY-SA copyright license with a link to the original source and this disclaimer.
Link to original article:https://stackoverflow.com/questions/514044/precision-problem-on-decimal-dbparameter
shahkalpesh :

Adding to Marc's suggestion, you can change the code to \n\n\nIDbDataParameter prm = comm.CreateParameter();\n\n\nRest of the code should work fine.\nPrecision and Scale properties are \"explicit interface implementation\" in DbParameter.",
2009-02-05T01:04:31
Marc Gravell :

Have you tried setting Precision and Scale? Note you need to cast first.",
2009-02-05T00:56:18
yy