none
Decimales en SQL Server y Visual C# RRS feed

  • Pregunta

  • hola la duda que traigo hoy es fácil para quien lo sepa tengo un procedimiento almacenado al cual le mando el parametro desde c# asi :

    SqlParameter ParGravado8 = new SqlParameter();
    ParGravado8.ParameterName = "@gravado8";
    ParGravado8.SqlDbType = SqlDbType.Decimal;
    ParGravado8.Precision = 3;
    ParGravado8.Scale = 4;
    ParGravado8.Value = Iva_Venta.Gravado8;
    SqlCmd.Parameters.Add(ParGravado8);

    asi es como estoy pasando los decimales ahora pero en todo el resto del proyecto por desconocimiento solo pasaba la precicion,

    despues de haber estudiado un poco me di cuenta que la precicion serian los enteros y la scala los decimales, o estoy confundido?. 

    que pasa si al parámetro le paso un decimal sin scala ni precicion o con alguno de los dos SQL lo maneja estoy medio perdido , y cual seria la mejor opcion a seguir. Gracias buenas tardes.

    miércoles, 25 de octubre de 2017 17:34

Respuestas

  • Precision es el número total de dígitos que admite (contando la parte entera más los decimales).

    Scale indica cuántos de esos dígitos son decimales.

    Por ejemplo, Precision=10, Scale=2 indica "8 dígitos enteros y 2 decimales". Obviamente, no tiene sentido que Precision sea menor que Scale.

    Si no indicas los valores, la precisión predeterminada es 18, y la escala predeterminada es 0. Al menos, así es en SQL Server, no sé si Visual Studio le pasa valores distintos.

    https://technet.microsoft.com/en-us/library/ms187746(v=sql.110).aspx

    miércoles, 25 de octubre de 2017 18:09