12

我想在 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 中是正确的语法吗?

4

2 回答 2

10

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

RAISERROR除非您添加RETURN. 所以你需要添加一个块BEGIN ... END来保存这两个语句。

此外,我不确定您为什么选择严重级别 15。这通常表示语法错误

最后我会使用简化条件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 
于 2015-04-06T15:08:04.817 回答
-1

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

于 2013-03-15T10:31:43.670 回答