хранимая процедура ожидает параметр, который не был предоставлен - PullRequest
0 голосов
/ 18 декабря 2009

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

Ответы [ 4 ]

3 голосов
/ 18 декабря 2009

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

2 голосов
/ 18 декабря 2009

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

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

0 голосов
/ 18 декабря 2009

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

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

 As... 
0 голосов
/ 18 декабря 2009

Можете ли вы дать более подробную информацию, например, как вы вызываете sproc, сам параметр и значение. Вы знаете, что в своем sproc вы можете установить значения по умолчанию для переменных.

Что-то с эффектом:

ALTER SprocMySproc
 @myvar varchar(50)=NULL

SELECT blah FROM MyTable WHERE MyField=@myvar OR @myvar IS NULL

Ваш действительный код C # или vb.net может игнорировать отправку параметра, если он нулевой или пустой

if(!(String.IsNullOrEmpty(myVar)))
 {
  //pass the parameter
  mySQLCommandObject.Parameters.Add("@myvar", sqldbtype.varchar).Value = myVar;
  //other code...
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...