我有一个简单的存储过程,我正在我创建的表上执行。当我使用硬编码参数单独执行update语句时,它可以工作,但是程序在执行时不会更新。它返回“命令已成功完成”但没有行受到影响。我检查数据并且它也没有改变。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter PROCEDURE uspUpdatePrices
@adjustment AS float,
@itemNumber AS VarChar
AS
BEGIN
UPDATE [NIMEH].[dbo].[TestIV00108]
SET UOMPRICE = @adjustment
WHERE RTRIM(ITEMNMBR) = @itemNumber
END
GO
答案 0 :(得分:0)
因为在where子句中比较是在两个字符串变量之间,所以确保参数中的值与行中的值完全相同。
如果开始或结束时出现空格,则将ltrim和rtrim都应用于列值。
同样指定varchar列的长度,因为sql server中的默认长度为30,这可能导致溢出。
注意 - 对表列进行操作使其无法搜索,因此索引无法正常使用,最好对参数值进行操作