【发布时间】:2009-12-18 16:13:48
【问题描述】:
我从 C# .net 调用存储过程,其中一个字符串参数为空。在这种情况下,我通过 DBNull.Value。但是,我收到上述错误。有什么想法吗?
【问题讨论】:
-
尝试执行您的 sp,使用您通过 exec 命令使用 ssms 传递的参数。
标签: asp.net sql-server-2005 stored-procedures
我从 C# .net 调用存储过程,其中一个字符串参数为空。在这种情况下,我通过 DBNull.Value。但是,我收到上述错误。有什么想法吗?
【问题讨论】:
标签: asp.net sql-server-2005 stored-procedures
如果字符串为空,您将看到此错误。为避免这种情况,您可以在存储过程中设置默认参数值,或者如果您的字符串为空,则可以传递DBNull.Value。
【讨论】:
如果参数的值为“null”(与 DBNull.Value 相对),您会得到此信息。
你确定参数值是DBNull.Value吗?
【讨论】:
您有权访问存储过程吗?如果是这样,(并且如果存储过程逻辑允许),修改输入参数的声明以添加“= Null”结束,如
Create procedure ProcName
@MyParameterName Integer = Null,
-- con't
As...
【讨论】:
您能否提供更多详细信息,例如您如何调用存储过程、参数本身和值。你知道在你的存储过程中你可以为变量设置默认值。
大意是:
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...
}
【讨论】: