Я досадно получил то, что кажется очень «популярной» ошибкой. Однако, в моем случае я поставляю ожидаемый параметр, и он определенно имеет значение, поэтому я в тупике. Вот мой код:Процедура или функция '' ожидает параметр '', который не указан
public static DataTable MyDataTable(string pd, bool showAll)
{
DataTable results = new DataTable("PD results");
string Conn = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(Conn))
{
SqlCommand cmd = new SqlCommand("dbo.MyProcedure", connection);
SqlParameter pdParam = new SqlParameter("@i_user", SqlDbType.VarChar);
pdParam.Value = pd;
cmd.Parameters.Add(pdParam);
if (showAll)
cmd.Parameters.AddWithValue("@i_ShowALL", (int)1);
else
cmd.Parameters.AddWithValue("@i_ShowALL", (int)0);
SqlDataAdapter da = new SqlDataAdapter(cmd);
try
{
da.Fill(results);
}
catch (Exception ex)
{
string error = ex.Message;
}
}
return results;
}
Я прошел через код и возникает ошибка с параметром @i_user
. Однако, когда я добавляю параметр, он имеет значение, и я подтвердил это, посмотрев на SqlDataAdapter> SelectCommand> Параметры> Непубличные элементы> элементы> [0] {@i_user}> base> значение.
Несмотря на параметр, поставляемый со значением varchar
я получаю ошибку
Процедура или функция «dbo.MyProcedure» ожидает параметр «@i_user», который не входит в комплект
Что я делать не так?
предложение: добавить 'cmd.CommandType = CommandType.StoredProcedure;' –
Как говорит Dmity, вы не говорите 'SqlCommand', что вы запуская хранимую процедуру, чтобы она интерпретировала команду как простую строку sql, которая не содержит никаких параметров. –
@DmitryBychenko - это решило проблему. Я совершенно забыл добавить это. Глупая ошибка. Если вы добавите это в качестве ответа, я соглашусь с ним. – sr28