SQL Server如何在@variable为true时触发RAISERROR终止脚本
解决方案
RAISERROR为控制流语句,无法直接搭配WHERE子句实现条件触发,需通过IF条件判断封装终止逻辑。
适用SQL Server所有版本的实现
IF @Variable = 'True' BEGIN RAISERROR('脚本终止:触发变量条件', 18, -1) WITH NOWAIT RETURN END
- RETURN会直接终止当前批处理的后续执行,
WITH NOWAIT参数会立即把错误信息输出到消息栏,避免缓存延迟。 - 如果
@Variable为BIT类型(SQL标准布尔量类型),把判断条件改为IF @Variable = 1即可,不需要加字符串引号。
SQL Server 2012及以上版本更简洁的实现
推荐优先使用THROW替代已过时的RAISERROR:
IF @Variable = 'True' BEGIN THROW 50001, '脚本终止:触发变量条件', 1; END
- THROW默认触发严重级别为16的错误,无需额外声明即可终止当前脚本执行,语法更简洁规范。
内容的提问来源于stack exchange,提问作者Jasper
相关产品推荐
相关产品推荐

