Tengo un problema con la siguiente pieza de código. Estoy pasando un parámetro (List<SqlParameter>
) a un método que ejecuta el siguiente código.SqlCommand.Parameters.AddWithValue issue: Procedimiento o función X espera el parámetro @Y, que no se suministró
Cuando se ejecuta SQL Server arroja un error que dice que el proc espera un parámetro que no se proporcionó. Conozco este error y lo entiendo, y al recorrer el código puedo ver que el objeto cmdExecuteReader
tiene una colección de parámetros con el nombre y el valor correctos. ¿Cual podría ser el problema?
public SqlDataReader ExecuteReader(string storedProcedure, List<SqlParameter> parameters = null)
{
SqlCommand cmdExecuteReader = new SqlCommand()
{
CommandType = System.Data.CommandType.Text,
Connection = conn,
CommandText = storedProcedure
};
if (parameters != null)
{
foreach (SqlParameter param in parameters)
{
cmdExecuteReader.Parameters.AddWithValue(param.ParameterName, param.Value);
}
}
if (conn.State == System.Data.ConnectionState.Closed)
conn.Open();
return cmdExecuteReader.ExecuteReader();
}
+1. Personalmente, no uso AddWithValue, prefiero definir explícitamente los tipos de datos (y tamaños); de lo contrario, puede que se hagan suposiciones incorrectas (como pasar valores de cadena .NET como NVARCHAR) que me vuelven paranoico. – AdaTheDev