usar tiene que procedimiento parámetro parametros net función esperaba especificado ejemplos demasiados como commandtype argumentos c# .net database sqlcommand

c# - tiene - sqlcommand parameters vb net



espera el parámetro ''@ID'', que no fue suministrado? (5)

Estoy enviando ID como parámetro externo pero está dando error

System.Data.SqlClient.SqlException: Procedimiento o función ''usp_ClientHistoryItem'' espera el parámetro ''@ID'', que no se suministró

Código

using (SqlCommand cmd = new SqlCommand("dbo.usp_ClientHistoryItem", conn)) { SqlParameter parameterID = new SqlParameter("@ID", oReservation.Id); parameterID.Direction = ParameterDirection.Output; cmd.Parameters.Add(parameterID); cmd.Parameters.Add(new SqlParameter("@PhoneNo", oReservation.ClientPhone)); cmd.Parameters.Add(new SqlParameter("@UserId", oReservation.UserID)); cmd.Parameters.Add(new SqlParameter("@Description", oReservation.Description)); cmd.Parameters.Add(new SqlParameter("@TestId", oReservation.TestId)); cmd.Parameters.Add(new SqlParameter("@StartDate", oReservation.StartDate)); cmd.ExecuteNonQuery(); returnValue = Convert.ToInt32(cmd.Parameters["@ID"].Value); return returnValue; }


Este puede resolver mi problema puede ser útil

cmd.CommandType = CommandType.StoredProcedure;


Hola chicos.

Debe establecer la propiedad CommandType para el comando en StoredProcedure si ese es el caso. De lo contrario no detectaría los parámetros.


Otra razón por la que se produce este error es cuando los nombres de las variables no coinciden en su procedimiento y código almacenados porque el código no encuentra el parámetro al que se debe pasar el valor. Asegúrese de que coincidan:

Procedimiento almacenado:

create procedure getEmployee @ID as Begin select * from emp where id = @ID End

Código:

SqlParameter p = new SqlParameter("@ID", id); cmd.Parameter.Add(p);

El parámetro @ID debe coincidir tanto en el código como en el procedimiento almacenado


Parece que estás llamando a un procedimiento almacenado, sin embargo, nunca has definido tu SqlCommand como un procedimiento almacenado:

using (SqlCommand cmd = new SqlCommand("dbo.usp_ClientHistoryItem", conn)) { cmd.CommandType = CommandType.StoredProcedure; // add this line to tell ADO.NET it''s a stored procedure!!

Si olvida esa línea, entonces ADO.NET intentará interpretar sus cosas como una declaración SQL ad-hoc ...


Su parámetro de ID en el procedimiento almacenado debe configurarse como parámetro de SALIDA. Solo lo está configurando en el código no en el procedimiento almacenado.