繁体   English   中英

使用多个 if 语句创建过程时获取无效的列名

[英]Getting invalid column name when creating a procedure using multiple if statements

如果有人能指出我正确的方向。 我有一个作业问题,我需要创建一个存储过程,该过程接受产品名称并检查客户花费了多少。 根据花费的多少,折扣会增加到现有折扣中。

我一直在参考老师提供的视频和 SQL 脚本。 我还检查了 w3schools、sqlshack 和其他一些网站来完成该项目,但我已经陷入困境。 if 语句中的任何列名都会给我一条错误消息“列名无效”。 如果将表名添加到列中,则会收到“无法绑定多部分标识符”的不同错误消息。 我已经将内部连接移到 if 语句内部并且没有改变任何东西。

    
Use Northwind;

go

CREATE PROCEDURE CategoryDiscount
 @categoryname varchar(50)

 AS

Select [Order Details].UnitPrice, Quantity from [Order Details] 
INNER JOIN Products on [Order Details].ProductID= Products.ProductID
INNER JOIN Categories on Categories.CategoryID = [Order Details].ProductID

If (UnitPrice * Quantity) < 50
    begin
        update [Order Details] 
        set Discount = Discount + .05
        Where CategoryName = '@categoryname';
    end
ELSE IF (UnitPrice * Quantity) between 50 and 100
    begin
        update [Order Details] 
        set Discount = Discount + .10
        Where CategoryName = '@categoryname';
    end
ELSE IF (UnitPrice * Quantity) > 100
    begin
        update [Order Details] 
        set Discount = Discount + .15
        Where CategoryName = '@categoryname';
    end
Else
    begin
        print 'Incorrect'
    end;

您应该将值 UnitPrice 和 Quantity 存储在变量中,这些值可以是 @UnitPrice 和 @Quantity 并且它将在存储过程开头的 select 语句中。 然后在 if 语句中使用这些变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM