Pouvons-nous écrire la clause IN dans l'instruction ELSE IF dans SQL Server 2008

J'écris une fonction scalar-évaluée et à cette fonction je passe l'email et le methodID et il renverra l'INT et maintenant je dois vérifier la condition en fonction de methodID de sorte que j'aie le return comme montré ci-dessous

ALTER FUNCTION FN_EMPCHECK ( @EmailAddress VARCHAR(150), @methodID INT ) RETURNS INT AS BEGIN DECLARE @IsResult INT IF(@methodID = 101) BEGIN SELECT @IsResult = ID FROM table1 WHERE EmailAddress = @EmailAddress END ELSE IF(@methodID = 102 OR @methodID = 104 OR @methodID = 105 OR @methodID = 107 OR @methodID = 108 OR @methodID = 109 OR @methodID = 110 OR @methodID = 111 OR @methodID = 114) BEGIN SELECT @IsResult = ID FROM table2 WHERE EmailAddress = @EmailAddress END ELSE IF(@methodID = 103 OR @methodID = 106 OR @methodID = 112 OR @methodID = 113) BEGIN SELECT @IsResult = ID FROM table3 WHERE EmailAddress = @EmailAddress END RETURN @IsResult END 

Besoin de suggestions concernant Else Si la déclaration dans la fonction ci-dessus est la bonne façon ou je peux écrire de toute autre manière simple (écrire de nombreuses conditions OU)

Vous pouvez utiliser IN au lieu de plusieurs opérateurs OR dans vos conditions ELSE IF, vérifiez le code ci-dessous

 ALTER FUNCTION FN_EMPCHECK ( @EmailAddress VARCHAR(150), @methodID INT ) RETURNS INT AS BEGIN DECLARE @IsResult INT IF(@methodID = 101) BEGIN SELECT @IsResult = ID FROM table1 WHERE EmailAddress = @EmailAddress END ELSE IF(@methodID IN (102, 104, 105, 107, 108, 109, 110, 111, 114)) BEGIN SELECT @IsResult = ID FROM table2 WHERE EmailAddress = @EmailAddress END ELSE IF(@methodID IN (103 ,106, 112, 113)) BEGIN SELECT @IsResult = ID FROM table3 WHERE EmailAddress = @EmailAddress END RETURN @IsResult END 

Oui Vous pouvez utiliser IN dans une instruction If

 ALTER FUNCTION FN_EMPCHECK ( @EmailAddress VARCHAR(150), @methodID INT ) RETURNS INT AS BEGIN DECLARE @IsResult INT IF(@methodID = 101) BEGIN SELECT @IsResult = ID FROM table1 WHERE EmailAddress = @EmailAddress END ELSE IF @methodID IN (102, 104, 105, 107, 108, 109, 110, 111, 114) BEGIN SELECT @IsResult = ID FROM table2 WHERE EmailAddress = @EmailAddress END ELSE IF @methodID IN (103 ,106, 112, 113) BEGIN SELECT @IsResult = ID FROM table3 WHERE EmailAddress = @EmailAddress END RETURN @IsResult END