如何在SQL Server中停止存储过程的执行?

31

假设我有一个存储过程,其中有一个简单的IF块。如果执行的检查符合标准,那么我希望停止进一步执行该存储过程。

怎样做最好?

以下是代码:

IF EXISTS (<Preform your Check>)
BEGIN
    // NEED TO STOP STORED PROCEDURE EXECUTION
END
ELSE
BEGIN
    INSERT ()...
END

非常感谢您对此的帮助!

2个回答

77

只需调用 RETURN 即可:

IF EXISTS (<some condition>)
BEGIN
    // NEED TO STOP STORED PROCEDURE EXECUTION
    RETURN
END
这将立即将控制权返回给调用者 - 它会跳过过程中的一切内容。

如果这是一个事务,该怎么办?它会显示“EXECUTE后的事务计数表明BEGIN和COMMIT语句不匹配。之前的计数=0,当前的计数=1”。 - Muflix

0
你可以在 SP 体的末尾放置一个跳转标签,并在第一个 IF 语句中发出 GOTO。或者,你可以扩展第一个 BEGIN ... END 块以包含整个 SP 体的其余部分,并反转条件(IF NOT EXISTS...)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接