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