2009-12-18 3 views
0

Я вызываю хранимую процедуру из C# .net, а один из параметров строки - null. Когда это так, я передаю DBNull.Value. Однако я получаю вышеуказанную ошибку. Есть идеи?хранимая процедура ожидает параметр, который не был отправлен

+0

пытается выполнить ваш sp, с параметрами, которые вы передаете с помощью ssms командой exec. – Saar

ответ

2

Вы получаете это, если значение параметра равно «null» (в отличие от DBNull.Value).

Вы уверены, что значение параметра DBNull.Value?

+0

haha ​​извините моя ошибка. оно работает. – Riz

3

Если строка равна null, вы увидите эту ошибку. Чтобы избежать этого, вы можете установить значение параметра по умолчанию в сохраненном proc, или вы можете передать DBNull.Value, если ваша строка равна NULL.

0

Можете ли вы дать более подробную информацию о том, как вы вызываете 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... 
} 
0

У вас есть доступ к Хранимая процедура? Если да, то (А если хранимая процедура логика позволит ему), изменить декларацию входного параметра, чтобы добавить «= Null» в конце, как и в

Create procedure ProcName 
@MyParameterName Integer = Null, 
    -- con't 

As...