[英]Can we write the IN clause in ELSE IF statement in SQL Server 2008
我正在編寫一個標量值函數,並且我正在傳遞電子郵件和methodID,它將返回INT,現在我需要根據methodID檢查條件,以便我返回如下所示
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
需要有關Else的建議如果在上述函數中聲明天氣是正確的方式,或者我可以用任何其他簡單的方式編寫(編寫許多OR條件)
您可以在ELSE IF條件中使用IN而不是多個OR運算符,請檢查下面的代碼
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
是您可以在If語句中使用IN
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.