存储过程需要未提供的参数

时间:2009-12-18 16:13:48

标签: asp.net sql-server-2005 stored-procedures

我正在从C#.net调用存储过程,其中一个字符串参数为null。在这种情况下,我传递DBNull.Value。但是,我得到了上述错误。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

如果字符串为null,您将看到此错误。为避免这种情况,您可以在存储过程中设置默认参数值,或者如果字符串为空,则可以传递DBNull.Value

答案 1 :(得分:2)

如果参数的值为“null”(与DBNull.Value相反),则会得到此值。

您确定参数值是DBNull.Value吗?

答案 2 :(得分:0)

您能否提供更多详细信息,例如您如何调用sproc,参数本身和值。您可以在sproc中设置变量的默认值。

产生效果:

ALTER SprocMySproc
 @myvar varchar(50)=NULL

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

如果参数为null或为空

,您的实际C#或vb.net代码可以忽略发送参数
if(!(String.IsNullOrEmpty(myVar)))
 {
  //pass the parameter
  mySQLCommandObject.Parameters.Add("@myvar", sqldbtype.varchar).Value = myVar;
  //other code...
 }

答案 3 :(得分:0)

您是否可以访问存储过程?如果是这样,(并且如果存储过程逻辑允许它),修改输入参数的声明以添加“ = Null ”结束,如

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

 As...