【问题标题】:Update Store Procedure not working更新存储过程不起作用
【发布时间】:2014-06-30 16:45:03
【问题描述】:

我有一个在我创建的表上执行的简单存储过程。当我使用硬编码参数自行执行更新语句时,它可以工作,但执行时过程不会更新。它返回“命令已成功完成”,但不受影响的行。我检查了数据,它也没有改变。

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

【问题讨论】:

  • 定义参数的长度。例如@itemNumber AS VarChar(100)
  • 您发布的查询是为了更改过程 - 不是为了执行!您确定您以正确的方式运行该程序吗?
  • 这只是过程本身,而不是执行

标签: sql-server stored-procedures


【解决方案1】:

由于 where 子句中的比较是在两个字符串变量之间进行,因此请确保参数中的值与行中的值完全相同。

如果在开始或结束时出现空白,则将 ltrim 和 rtrim 应用于列值。

还要指定 varchar 列的长度,因为在 sql server 中默认长度为 30,这可能会导致溢出。

注意-对表列进行操作会导致无法搜索到索引不能正常使用,最好对参数值进行操作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多