if /ELse In SQL Using Parameter to distinctive a Percentage to add to Value Column

If /ELse In SQL Using Parameter to distinguish a Percentage to be added to Value Column

我正在尝试使用 If/Else 编写一个 SQL 存储过程,它将 IncPercent 中的整数作为参数,如果 IncPercent 小于 10,则将其视为要添加到OrderDetails table 上的值列。否则,如果它是 10 或更高,它只会将 10% 添加到 OrderDetails table 上的值列。

    Create Procedure spAddPercentage
    (
    @IncPercent int
    )
    AS
    BEGIN 
    IF @IncPercent < 10  SELECT Value From OrderDetails
    UPDATE OrderDetails
    THEN Value * @IncPercent / 100 + Value
    END IF
    ELSE @IncPercent > 10 SELECT Value FROM OrderDetails
    UPDATE OrderDetails 
    THEN  Value * 1.1
    END

更新:这是我使用的有效代码

      Create Procedure spAddPercentage
      (
      @IncPercent int
      )
      AS
      BEGIN 
      IF @IncPercent < 10
       BEGIN
        UPDATE OrderDetails
        SET Value = Value * ( 1 + @IncPercent / 100.0)
        END
       ELSE 
      UPDATE OrderDetails
      SET Value = Value * 1.1
      END

如果您连 update 的基本语法都不知道,为什么还要编写存储过程?我希望是这样的:

UPDATE OrderDetails
    SET Value = (CASE WHEN @IncPercent <= 10
                      THEN Value * ( 1 + @IncPercent / 100.0)
                      ELSE Value * 1.1
                 END);

您的语法看起来最接近 SQL 服务器,所以我假设那是数据库。该代码在其他数据库中看起来非常相似。

以下是您的代码存在的一些问题:

  • UPDATE 采用 table 名称,而不是列名称。
  • SQL 服务器进行整数除法,所以 1/100 = 0,而不是 0.01。
  • SUM()用于聚合,不用于在同一行中添加数字。
  • SQL 服务器没有 END IF。我熟悉的语言中没有 END ELSE.
  • 不要以 "sp" 开始存储过程定义。它离 "sp_" 太近了,这意味着 SQL 服务器中有一些特殊的东西(here 是一个很好的解释)。