我有一个存储过程来更新表。不是所有字段都是必需的,有些字段可能是空白的。
例如,标题不是必需的,但是当它为空时我会收到错误
Dim ptitle As New SqlParameter("@title", SqlDbType.NVarChar, 20)
ptitle.Value = objFormat.CheckSQL(title)
myCommand.Parameters.Add(ptitle)
如何修复它,以便在数据字段为空时允许空值?
答案 0 :(得分:4)
在您的存储过程中,为title
提供默认值NULL
,这可以解决您的问题。
@title NVARCHAR(20) = NULL
答案 1 :(得分:1)
首先要做的是在sp_UpdateUser中初始化@Title的值:
alter procedure sp_UpdateUser
@Title varchar(50) = null,
...additional sql code here
其次,它取决于您为ptitle
到objFormat.CheckSQL(title)
提供的价值。如果它提供一个空字符串,那么你需要在存储过程中添加一个附加语句:
If @Title = '' set @Title = null
答案 2 :(得分:0)
在存储过程定义中,您可以编写参数的默认值,例如
@title nvarchar(20)= NULL, ... ...
这样,参数是可选的,当你不提供时,sp调用不会失败。
至少我们在SQL 2008存储过程中使用这种方法。
答案 3 :(得分:0)
将输入字段转换为理智。空字符串为“”,空值为0(如果可能)
答案 4 :(得分:0)
您可以在存储过程中将变量显式设置为NULL值。
答案 5 :(得分:0)
您可以在存储过程中执行此操作:
@title NVARCHAR(20) = NULL
或者在你的vb.net代码中使用这样的东西
Sub InsertValues (Optional Title as String = "",...)