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