Solución:
Ya he dado crédito de respuesta, pero creo que vale la pena mencionar aquí exactamente cuál fue la raíz de mis problemas, en caso de que alguien más encuentre este elemento mientras busca una respuesta a su propio problema.
El problema es que la implementación de C # de consultas parametrizadas para Oracle contiene un error grave y potencialmente peligroso: un verdadero “pozo en el dominio público”:
No importa el nombre de sus parámetros; deben agregarse en el orden en que aparecen en la consulta.
Vea más aquí.
Cuando dice que ha verificado los parámetros, ¿se refiere a la Parameters
colección en la clase SqlCommand? Es posible que se esté equivocando con esta nota en la página SqlParameter:
Tenga cuidado cuando use esta sobrecarga del constructor SqlParameter para especificar valores de parámetros enteros. Debido a que esta sobrecarga toma un valor de tipo Objeto, debe convertir el valor integral en un tipo de Objeto cuando el valor es cero, como lo demuestra el siguiente ejemplo de C #. Dupdo
Parameter = new SqlParameter("@pname", Convert.ToInt32(0));
Si no realiza esta conversión, el compilador asume que está intentando llamar a la sobrecarga del constructor SqlParameter (string, SqlDbType).
Te sugiero que uses algo como
cmd.Parameters.Add(
new SqlParameter("Field1", SqlDbType.Int32) { Value = field1Val });
en lugar de establecer explícitamente el tipo.