当前位置: 首页 > 知识库问答 >
问题:

更新存储过程不起作用

汪晨
2023-03-14

我有一个简单的存储过程,在我创建的表上执行。当我使用硬编码参数单独执行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

共有1个答案

锺离霖
2023-03-14

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

如果开头或结尾处存在空格,则将 ltrim 和 rtrim 同时应用于列值。

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

对表列的注释操作使其不可搜索,因此无法正确使用索引,最好对参数值进行操作

 类似资料:
  • 我们有大约100000条记录要插入数据库。在Hibernate批插入中执行此操作是一个好主意吗?选择批量大小的策略应该是什么? 或者我们应该为批量插入调用存储过程?无法获取有关将对象数组从Hibernate传递到DB存储过程的任何信息。 或者两者的混合搭配会加快这一过程。比如批量调用存储过程?

  • 分隔符$$CREATE PROCEDURE

  • 我有一个带有一些表的postgresql数据库和一个在这个表上写的存储过程。当我从调用这个存储过程时,一切都很顺利:我看到我的记录插入了我的表中。虽然,当我通过JDBC调用这个存储过程时,我得到了存储过程执行的日志,序列是递增的,但是我的表没有更新。 以下是我在新安装的postgresql(9.5.1)中执行的SQL: 表格创建: 存储过程的创建: 从调用awrites存储过程实际上会触发post

  • 我得到了这样的错误{“code”:“er_parse_error”,“errno”:1064,“sqlmessage”:“您的SQL语法中有错误;请查看与您的MySQL服务器版本相对应的手册,以便在第1行'sp_li_uploaddata_get'附近使用正确的语法”,“sqlstate”:“42000”,“index”:0,“SQL”:“sp_li_uploaddata_get”}

  • 我正在使用在我的反应应用程序中管理客户端存储,因此没有后端图形化服务器。与相关的所有内容都在客户端运行。我将所有UI状态存储在的缓存中。我还在客户端定义了所有解析器。 以下是新建客户端实例的代码: 我读过这篇文章https://www.apollographql.com/docs/angular/features/cache-updates/#automatic-存储更新关于使用apollo gr

  • 在下面的示例中,存储过程工作,而不工作。两者之间唯一的区别是SQL语句的字母大小写。