首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何结束IF-ELSE IF-ELSE块

如何结束IF-ELSE IF-ELSE块
EN

Stack Overflow用户
提问于 2015-09-16 17:17:27
回答 6查看 72.2K关注 0票数 24

当我使用正确的参数运行下面的过程以便-1值不被返回时,我的DML语句都不会触发。我猜它是将我所有的DML语句作为ELSE块的一部分。

Server 2014

如果-否则-如果阻塞,我该如何结束?

代码语言:javascript
复制
ALTER PROCEDURE [GenerateNumber] (
    @Code VARCHAR(2)
)
AS
BEGIN
    DECLARE @stringConcat VARCHAR = 'X';

    IF @Code = 'KP'
        SET @stringConcat += 'Y';
    ELSE IF @Code = 'RL'
        SET @stringConcat += 'Z';
    ElSE
        -- Return error code and stop processing
        SELECT -1;
        RETURN;

    BEGIN TRY
        -- Various DML statements...

        SELECT @successValue;
        RETURN;
    END TRY
    BEGIN CATCH
        SELECT -1;
        RETURN;
    END CATCH
END
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-09-16 17:25:22

好的,您必须在Begin语句中使用ElseEnd,因为它包含多行代码。

代码语言:javascript
复制
    IF @Code = 'KP'
        SET @stringConcat += 'Y';
    ELSE IF @Code = 'RL'
        SET @stringConcat += 'Z';
    ElSE
    Begin
        -- Return error code and stop processing
        SELECT -1;
        RETURN;
    End
票数 34
EN

Stack Overflow用户

发布于 2015-09-16 17:27:32

你的缩痕是在骗你。

代码语言:javascript
复制
IF @Code = 'KP'
     SET @stringConcat += 'Y';
 ELSE IF @Code = 'RL'
     SET @stringConcat += 'Z';
 ElSE
     -- Return error code and stop processing
     SELECT -1;  -- THIS is evaluated as the ELSE
     RETURN;     -- THIS is run regardless.

只有最后一行之后的第一行才会作为一个附加条件来执行。无论如何,返回都将运行。你的开始尝试无法到达。

试试这个:

代码语言:javascript
复制
IF @Code = 'KP'
     SET @stringConcat += 'Y';
 ELSE IF @Code = 'RL'
     SET @stringConcat += 'Z';
 ElSE
     BEGIN
     -- Return error code and stop processing
     SELECT -1;
     RETURN;
     END
票数 9
EN

Stack Overflow用户

发布于 2015-09-16 17:25:37

如果希望SELECT -1RETURN同时位于ELSE中,则必须使用BEGIN / END块。现在只有SELECT -1在其他分支中。

所以你需要

代码语言:javascript
复制
ELSE
  BEGIN
    SELECT -1;
    RETURN;
  END
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32614843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档