带有 if 语句的存储过程不起作用

Stored procedure with if statement not working

我想创建一个存储过程来检查 purchase_info table 中的产品是否有足够的数量。

这是我的代码。但它不起作用,结果没有显示 if...else 查询。

谁能帮我解决这个问题?谢谢。

CREATE PROCEDURE dbo.usp_CheckProductStock
    (@product_id varchar(50),
     @color varchar(80),
     @quantity int)
AS
BEGIN;
    IF @quantity <= (SELECT purchase_quantity 
                     FROM purchase_info  
                     WHERE product_id = @product_id AND color = @color) 
    BEGIN
        PRINT 'There is enough stock'
    END
    ELSE
    BEGIN
        SELECT product_id, color, purchase_quantity 
        FROM purchase_info 
        WHERE product_id = @product_id AND color = @color;
    END
END;


EXEC dbo.usp_CheckProductStock @product_id='LF10001', @color='APR', @quantity=15

@quantity 参数的奇异值与 SELECT 语句的多行之间存在冲突。所以它阻止了它们之间的比较。

请尝试更改 if 子句逻辑如下:

IF EXISTS (SELECT purchase_quantity 
        from purchase_info  
        WHERE product_id = @product_id and color = @color
            AND purchase_quantity <= @quantity)