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 是一个很好的解释)。
我正在尝试使用 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 是一个很好的解释)。