12

SQLの単一のIFステートメントに複数の条件を追加したい。

私はSQLが苦手で、いくつかの例を参照しました。すべてがIFで1つの条件のみを示しています。

これが私の手順です。

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を追加した場合を除き、実行はその後も続行されますRETURNBEGIN ... ENDしたがって、2 つのステートメントを保持するブロックを追加する必要があります。

また、なぜ重大度 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 に答える