Es imprescindible comprender el código de forma correcta previamente a aplicarlo a tu proyecto si tdeseas aportar algo puedes comentarlo.
Solución:
¡Encontré la respuesta! mi procedimiento almacenado es incorrecto, tengo decimal (9,6) en mi procedimiento almacenado, lo que hace que acepte 3 dígitos o menos. Lo cambié a (18,2)
Aunque el cartel original ha encontrado su solución, en beneficio de otras personas, pensé en publicar lo que me causó.
System.Data.SqlClient.SqlException: error al convertir el tipo de datos numérico a decimal.
Lamentablemente, el mensaje no dice con qué parámetro está teniendo el problema. Así que cambié todos los parámetros que estaba pasando para tener un valor de 0 (que es un valor adecuado para la mayoría de los tipos de SQL, es posible que deba usar otros valores), esto hizo que el error desapareciera. Luego podría volver a ponerlos a la normalidad, uno por uno, y cada vez, volví a probar. Así es como descubrí qué parámetro tenía el problema.
Resultó que para uno de los parámetros el valor que tenía en mi código (un decimal de C#) era demasiado grande para ir en el parámetro de procedimiento almacenado decimal (7,2).
Aquí tienes las reseñas y puntuaciones
Recuerda que puedes compartir este artículo si te fue de ayuda.