Я вызываю хранимую процедуру из C# .net, а один из параметров строки - null. Когда это так, я передаю DBNull.Value. Однако я получаю вышеуказанную ошибку. Есть идеи?хранимая процедура ожидает параметр, который не был отправлен
ответ
Вы получаете это, если значение параметра равно «null» (в отличие от DBNull.Value).
Вы уверены, что значение параметра DBNull.Value?
haha извините моя ошибка. оно работает. – Riz
Если строка равна null, вы увидите эту ошибку. Чтобы избежать этого, вы можете установить значение параметра по умолчанию в сохраненном proc, или вы можете передать DBNull.Value
, если ваша строка равна NULL.
Можете ли вы дать более подробную информацию о том, как вы вызываете sproc, сам параметр и значение. Вы знаете, что в вашем sproc вы можете установить значения по умолчанию для переменных.
Что-то эффект:
ALTER SprocMySproc
@myvar varchar(50)=NULL
SELECT blah FROM MyTable WHERE [email protected] OR @myvar IS NULL
Действительные C# или vb.net код может игнорировать отправку параметра, если он является нулем или пустого
if(!(String.IsNullOrEmpty(myVar)))
{
//pass the parameter
mySQLCommandObject.Parameters.Add("@myvar", sqldbtype.varchar).Value = myVar;
//other code...
}
У вас есть доступ к Хранимая процедура? Если да, то (А если хранимая процедура логика позволит ему), изменить декларацию входного параметра, чтобы добавить «= Null» в конце, как и в
Create procedure ProcName
@MyParameterName Integer = Null,
-- con't
As...
пытается выполнить ваш sp, с параметрами, которые вы передаете с помощью ssms командой exec. – Saar