Edm*_*d G 23 sql sql-server if-statement throw
我正在为一些存储过程添加一些验证,并且需要检查某些变量是否为空(它们在存储过程的早期填充).
我一直试图在if语句中添加一个"throw",如下所示:
IF (@val is null)
BEGIN
    THROW 50001, 'Custom text', 1
END
这会导致"throw"出现语法错误,因为它在throw之前查找if语句中的其他代码,但我只需要它在if语句中执行throw.
我需要保持存储过程尽可能轻,以尽可能快地执行.
有没有人有任何想法?
NRe*_*ngh 42
语法错误显示,因为前一个语句尚未终止.其他答案也可以,但是为了这样做你可以在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语句.
值得注意的是,微软已声明未来的T-SQL语言在每个语句后都需要分号,所以我的建议是现在开始养成习惯.
| 归档时间: | 
 | 
| 查看次数: | 14714 次 | 
| 最近记录: |