none
Procedure or function 'ORDENAR' expects parameter '@NOMBRE', which was not supplied. RRS feed

  • Pregunta

  • Saludos, estoy tratando de comunicarme con mi procedimiento almacenado en sql pero tengo el siguiente error:"Procedure or function 'ORDENAR' expects parameter '@NOMBRE', which was not supplied."

    aqui mi codigo:

    public void ordenarcategoria(E_CATEGORIA categoria)
            {
                SqlCommand CMD = new SqlCommand("ORDENAR", conexion);
                CMD.CommandType = CommandType.StoredProcedure;
                conexion.Open();
                CMD.Parameters.AddWithValue("@NOMBRE", categoria.Nombreclasificacion);
                CMD.Parameters.AddWithValue("@IDCATEGORIA", categoria.Idclasificacion);
          
                CMD.ExecuteNonQuery();
                conexion.Close();
            }

    Aqui mi procedimiento almacenado:

    CREATE PROC ORDENAR
    @IDCATEGORIA INT,
    @NOMBRE NVARCHAR(30)
    AS
    SELECT IDCATEGORIA, NOMBRE FROM clasificacion
    WHERE NOMBRE = @NOMBRE
    ORDER BY NOMBRE  DESC;
    

    El error ocurre en la linea: 

    CMD.ExecuteNonQuery();
    domingo, 14 de marzo de 2021 1:52

Respuestas

  • Tal cual el código que muestras no debería de generar ese error que mencionas, salvo que el valor de la propiedad Nombre del objeto E_CATEGORIA venga en nulo, valida que esta propiedad traiga un valor antes de enviar la instrucción en caso de que la propiedad traiga un nulo entonces puedes enviar un vacío con usar dobles comillas bastara para evitar ese error.

    public void ordenarcategoria()
    {
        using (var cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString))
        {
            cnx.Open();
            SqlCommand CMD = new SqlCommand("ORDENAR", cnx);
            CMD.CommandType = CommandType.StoredProcedure;
            CMD.Parameters.AddWithValue("@NOMBRE", "");
            CMD.Parameters.AddWithValue("@IDCATEGORIA", 1);
    
            CMD.ExecuteNonQuery();
        }
    }
    
     Como sugerencia abre la conexión en un bloque using para asegurarte que se destruya una vez finalice el bloque, de esta forma te evitas el Close.


    Saludos desde Monterrey, Nuevo León, México!!!

    domingo, 14 de marzo de 2021 2:35

Todas las respuestas

  • Tal cual el código que muestras no debería de generar ese error que mencionas, salvo que el valor de la propiedad Nombre del objeto E_CATEGORIA venga en nulo, valida que esta propiedad traiga un valor antes de enviar la instrucción en caso de que la propiedad traiga un nulo entonces puedes enviar un vacío con usar dobles comillas bastara para evitar ese error.

    public void ordenarcategoria()
    {
        using (var cnx = new SqlConnection(ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString))
        {
            cnx.Open();
            SqlCommand CMD = new SqlCommand("ORDENAR", cnx);
            CMD.CommandType = CommandType.StoredProcedure;
            CMD.Parameters.AddWithValue("@NOMBRE", "");
            CMD.Parameters.AddWithValue("@IDCATEGORIA", 1);
    
            CMD.ExecuteNonQuery();
        }
    }
    
     Como sugerencia abre la conexión en un bloque using para asegurarte que se destruya una vez finalice el bloque, de esta forma te evitas el Close.


    Saludos desde Monterrey, Nuevo León, México!!!

    domingo, 14 de marzo de 2021 2:35
  • Saludos, con tu codigo, se me ejecuta perfectamente, muchisimas gracias


    domingo, 14 de marzo de 2021 3:00
  • Hola:

     Podrías compartirnos como quedo el código que estas ejecutando y mas detalles del problema que ahora se te esta presentando?


    Saludos desde Monterrey, Nuevo León, México!!!

    domingo, 14 de marzo de 2021 3:02