簡體   English   中英

我們可以在SQL Server 2008中的ELSE IF語句中編寫IN子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM