为什么不支持使用Sql参数?

时间:2018-05-01 03:35:32

标签: sql sql-server parameters

如果我使用参数设置值以更新字段,则没有更新任何内容,但如果我直接将值分配给字段,一切正常。 这是我的sql脚本,其参数不起作用:

DECLARE @ItemValue  NUMERIC(2,1) = 0.0,
@ItemName   NVARCHAR = NULL,
@RuleID     INT,
@IsValid    BIT

SET @ItemValue  =9
SET @ItemName = 'chbWorkingTimePerDay'
SET @RuleID     = 1
SET @IsValid    = 1

UPDATE hrms.RuleValue  

SET ItemValue   = @ItemValue,
    IsValid     = @IsValid

FROM hrms.RuleItem RI

JOIN hrms.RuleValue RV 
ON RI.RuleItemID = RV.RuleItemID

WHERE RI.ItemName =  @ItemName
        AND RV.RuleID = @RuleID

这是我的sql脚本,没有适用的参数:

UPDATE hrms.RuleValue  

SET ItemValue   = 8.0,
    IsValid     = 1

FROM hrms.RuleItem RI

JOIN hrms.RuleValue RV 
ON RI.RuleItemID = RV.RuleItemID

WHERE RI.ItemName =  'chbWorkingTimePerDay'
        AND RV.RuleID = 1

1 个答案:

答案 0 :(得分:1)

@ItemName NVARCHAR = NULL将转换为@ItemName NVARCHAR(1) = NULL,这会切断字符串。您需要设置NVARCHAR尺寸。

所以使用:

@ItemName   NVARCHAR(100) = NULL

而不是:

@ItemName   NVARCHAR= NULL

SqlFiddle可用here