gpt4 book ai didi

SQL 仅在 if 语句内抛出

转载 作者:行者123 更新时间:2023-12-01 23:25:33 24 4
gpt4 key购买 nike

我正在向几个存储过程添加一些验证,并且需要检查某些变量是否不为空(它们是在存储过程中较早填充的)。

我一直在尝试在 if 语句中添加“抛出”,如下所示:

IF (@val is null)
BEGIN
THROW 50001, 'Custom text', 1
END

这会导致“throw”出现语法错误,因为它在 throw 之前在 if 语句内查找其他代码,但我只需要它在 if 语句内执行 throw。

我需要使存储过程尽可能轻,以使其执行速度尽可能快。

有人有什么想法吗?

最佳答案

由于前一个语句尚未终止,因此出现语法错误。其他答案也可以,但为了做到这一点,您可以在 THROW 之前添加一个分号,或者养成用分号终止所有语句的习惯。

IF (@val is null)
BEGIN
;THROW 50001, 'Custom text', 1
END

IF (@val is null)
BEGIN;
THROW 50001, 'Custom text', 1;
END;

您可能已经注意到:

IF (@val is null)
THROW 50001, 'Custom text', 1

...也可以工作,这是因为 SQL Server 知道 IF 语句之后的下一个总是一个新的 T-SQL 语句。

也许值得注意的是,微软已经表示 future 的 T-SQL 语言将要求在每个语句后添加分号,因此我的建议是现在就开始养成这个习惯。

关于SQL 仅在 if 语句内抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18053282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com