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.