我在MS SQL2008(C#)
中有这个存储过程ALTER PROCEDURE UpdateProducts
@ProductID INT, @Name nvarchar(50), @Length Float
AS
UPDATE Product
SET Name = @Name, Length = @Length
WHERE (ProductID = @ProductID)
长度在某些情况下是“”(没有)。但是当插入“”时,将插入值0。我希望该值为null。我怎样才能做到这一点?这不起作用:
if (Length == "")
{
Length = null;
}
答案 0 :(得分:2)
在proc中将默认值设置为NULL
,您不必明确地将NULL
传递给proc。
CREATE PROC ..dbo.Proc ( @param1 int =NULL, @param2 varchar(40) = NULL ,etc)
此外,如果您必须从您的应用发送NULL,您将使用DBNull.Value
答案 1 :(得分:0)
答案 2 :(得分:0)
使用NULLIF
UPDATE Product
SET Name = @Name, Length = NULLIF(@Length, '')
WHERE (ProductID = @ProductID)
编辑:这涉及不洁的输入,所以你不必担心它......