我试图用3种条件在SQL中执行IF语句,但当我试图显示消息时,它会显示所有3条消息。一旦这些条件之一为真,我如何结束if语句?
IF( @QuantiteStock > 100)
SET @QuantiteStock = @QuantiteStock;
PRINT @NomProduit + ' n`a pas été touché.' ;
IF(@QuantiteStock >= 10 AND @QuantiteStock <= 100)
SET @QuantiteStock = @QuantiteStock *1.25;
PRINT @NomProduit + ' a été augmenté à ' + CONVERT(VARCHAR(20),@QuantiteStock) ;
IF( @QuantiteStock < 10)
SET @QuantiteStock = 50;
PRINT @NomProduit + ' a été augmenté à 50' ;
end发布于 2014-11-03 16:33:47
对于多行,您必须使用begin / end,否则,第一行之后的所有内容都不是有条件的。
IF( @QuantiteStock > 100) BEGIN
SET @QuantiteStock = @QuantiteStock;
PRINT @NomProduit + ' n`a pas été touché.' ;
END所以:
IF( @QuantiteStock > 100) BEGIN
SET @QuantiteStock = @QuantiteStock;
PRINT @NomProduit + ' n`a pas été touché.' ;
END
ELSE IF (...) BEGIN
...
END
ELSE BEGIN
...
END发布于 2014-11-03 16:35:03
在它自己的IF上只应用于下一个语句,而是这样做,
IF( @QuantiteStock > 100) BEGIN
SET @QuantiteStock = @QuantiteStock;
PRINT @NomProduit + ' n`a pas été touché.';
END
IF(@QuantiteStock >= 10 AND @QuantiteStock <= 100) BEGIN
SET @QuantiteStock = @QuantiteStock *1.25;
PRINT @NomProduit + ' a été augmenté à '
+ CONVERT(VARCHAR(20),@QuantiteStock);
END
IF( @QuantiteStock < 10) BEGIN
SET @QuantiteStock = 50;
PRINT @NomProduit + ' a été augmenté à 50';
ENDIF只应用于下一个块或组。如果您不使用BEGIN和END对语句进行分组,那么它们都将是单独的块或组。
BEGIN和END将它们之间的语句分组为一个块。
因为您的条件是相互排斥的,所以可以将它们链接起来,以避免不必要的处理。
IF( @QuantiteStock > 100) BEGIN
SET @QuantiteStock = @QuantiteStock;
PRINT @NomProduit + ' n`a pas été touché.';
END
ELSE IF(@QuantiteStock >= 10 AND @QuantiteStock <= 100) BEGIN
SET @QuantiteStock = @QuantiteStock *1.25;
PRINT @NomProduit + ' a été augmenté à '
+ CONVERT(VARCHAR(20),@QuantiteStock);
END ELSE BEGIN
SET @QuantiteStock = 50;
PRINT @NomProduit + ' a été augmenté à 50';
ENDhttps://stackoverflow.com/questions/26718572
复制相似问题