【问题标题】:Why using Sql parameters are not supported?为什么不支持使用 Sql 参数?
【发布时间】:2018-10-11 04:04:06
【问题描述】:

如果我使用参数设置值以更新字段,则没有更新任何内容,但如果我直接将值分配给字段,则一切正常。 这是我的 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

【问题讨论】:

    标签: sql sql-server parameters


    【解决方案1】:

    @ItemName NVARCHAR = NULL 将转换为@ItemName NVARCHAR(1) = NULL,这将切断字符串。你需要设置NVARCHAR的大小。

    所以使用:

    @ItemName   NVARCHAR(100) = NULL
    

    代替:

    @ItemName   NVARCHAR= NULL
    

    SqlFiddle 可用here

    【讨论】:

    • 谢谢,这缩短了我的代码,但它不能帮助我解决问题,是的,不是 RI,而是 RV。
    • 它有效。感谢您的即时答复和您的时间。 @d-shih
    猜你喜欢
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2011-10-17
    相关资源
    最近更新 更多