我有一个具有以下属性的类:
public char Status{get;set;}
将此值传递给T-SQL存储过程以插入表中。
如果没有为此属性分配值,则会出现问题。它将\0
传递给SP。在SP中,我无法确定是否存在值。以下两项检查均失败。
@value = '' OR @value IS NULL
检查传递的参数(@value CHAR(1)
)是否包含有效值的正确方法是什么?
问题What is the Null Character literal in TSQL?的答案解决了我的问题。因此关闭这个问题。
答案 0 :(得分:0)
char不能为null,因为它是值类型。因此,有些事情是将您的状态属性设置为' \ 0'。在调用存储过程之前,应检查该值。如果找到它将DBNull.Value发送到您的存储过程的位置。
if(Status == '\0')
command.Parameters.AddWithValue("@value", DBNull.Value);
else
command.Parameters.AddWithValue("@value", Status);
然后在您的存储过程中,您只需检查
@value IS NULL
如果您无法更改代码,那么在存储过程中您可以检查字符值0,如下所示:
@value = CHAR(0)