单个IF语句中的多个条件

问题描述 投票:7回答:2

我想在SQL中的单个IF语句中添加多个条件。

我不擅长SQL并提到一些例子,所有都只显示IF中的一个条件。

这是我的程序。

CREATE PROCEDURE [dbo].[AddApplicationUser]    
(  
@TenantId BIGINT,  
@UserType TINYINT,
@UserName  NVARCHAR(100),  
@Password NVARCHAR(100)  
)  

AS    

BEGIN   

IF ((@TenantId IS NULL)  AND (@UserType=0 OR @UserType=1) )
  RAISERROR('The value for @TenantID should not be null', 15, 1) -- with log 

在IF中这种正确的多语言语法是什么?

sql sql-server sql-server-2008
2个回答
7
投票

是的,这是有效的语法,但它可能不会做你想要的。

除非你添加RAISERROR,否则执行将在你的RETURN之后继续执行。因此,您需要添加一个带有BEGIN ... END的块来保存这两个语句。

此外,我不知道为什么你为了严重程度15而饱满。那usually indicates a syntax error

最后,我将使用IN简化条件

CREATE PROCEDURE [dbo].[AddApplicationUser] (@TenantId BIGINT,
                                            @UserType TINYINT,
                                            @UserName NVARCHAR(100),
                                            @Password NVARCHAR(100))
AS
  BEGIN
      IF ( @TenantId IS NULL
           AND @UserType IN ( 0, 1 ) )
        BEGIN
            RAISERROR('The value for @TenantID should not be null',15,1);

            RETURN;
        END
  END 

-2
投票

是的,IF之后必须有布尔表达式。在这里你有一个直接的qazxsw poi。我希望它有所帮助。 GL!

© www.soinside.com 2019 - 2024. All rights reserved.