Como excepción señaló, hay que establecer explícitamente los SqlParameter.Precision
y SqlParameter.Scale
propiedades con el fin de utilizar el tipo de decimal
como parámetro.
Digamos que su campo SQL es del tipo decimal(18,8)
. La manera de hacer esto en línea es el uso de ortesis-inicialización para su SqlParameter al tiempo que añade a la SqlParameterCollection
, de la siguiente manera:
cmd.Parameters.Add(new SqlParameter("@ordGty", SqlDbType.Decimal) {
Precision = 18, Scale = 8 });
También se puede hacer
cmd.Parameters.Add(new SqlParameter("@ordGty", SqlDbType.Decimal) {
Precision = 18, Scale = 8}).Value = 0.4m; // or whatever
para agregar el valor, si necesito uno. Incluso podría hacer
cmd.Parameters.Add(new SqlParameter("@ordGty", SqlDbType.Decimal) {
Precision = 18, Scale = 8, Value = 0.4m /* or whatever */});
si lo prefiere. Brace initialization es realmente poderoso.
Nota al margen: me doy cuenta de que esta es una vieja pregunta, pero creo que esta forma es mucho más legible que crear el objeto al agregarlo a la lista y establecer la escala y la precisión. Para la posteridad! (ya que este es un resultado de búsqueda de Google de alta clasificación)
¿Tiene alguna pregunta? ¿Qué no encuentras claro sobre el error? – Oded
Hola, Sí, estoy obteniendo la excepción anterior para establecer la precisión y la escala. –
Y? Lo que no está claro sobre el error? Debe establecer la precisión y la escala. – Oded