我想在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
SQL中的这种正确语法是否适用于IF中的多元化?
答案 0 :(得分: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
答案 1 :(得分:-2)
是的,在IF之后必须有布尔表达式。在这里你有一个直接的link。我希望它有所帮助。 GL!