Еще одна причина, по которой выдается эта ошибка, заключается в том, что имена переменных не совпадают в вашей хранимой процедуре и коде, поскольку код не может найти параметр, которому необходимо передать значение.Убедитесь, что они совпадают:
Хранимая процедура:
create procedure getEmployee
@ID
as
Begin
select *
from emp
where id = @ID
End
Код:
SqlParameter p = new SqlParameter("@ID", id);
cmd.Parameter.Add(p);
Параметр @ID
должен совпадать как в коде, так и в хранимой процедуре