1

我似乎无法解决这个问题。如果变量为真,我想杀死我的脚本。但到目前为止我找不到任何答案。

我正在尝试什么:

raiserror('Error', 18, -1)
Where @Variable='True';

我已经声明并分配了变量

4

4 回答 4

3

raiseerror是一个 T-SQL 命令。它没有where子句,但你可以把它放在一个if块中:

IF @Variable = 'True'
    raiserror('Error', 18, -1)
于 2021-08-27T11:46:31.017 回答
1

你不能像 sql 查询那样使用它。它是命令,所以你可以写成

IF @Variable = 'True'
BEGIN
    raiserror('Error', 18, -1);
END
于 2021-08-27T11:50:11.293 回答
0

我想在这里反驳 paneerakbari 的建议。

当然,Microsoft 文档建议使用throw而不是 raiserror。

但是,Microsoft MVP Erland Sommarskog 的博客包含非常开明的帖子,他在他的错误和事务处理文章的第 2 部分中讨论了该文章所做的THROW操作较少,它需要一个分号,这可能会被危险地遗忘。因此,我强烈建议坚持使用不太危险的方法raiserror

于 2021-08-27T13:02:55.470 回答
0

这里的其他答案关于条件检查的结构是正确的,但我会建议您使用THROW而不是RAISERROR,根据文档。微软的文档https://docs.microsoft.com/en-us/sql/t-sql/language-elements/raiserror-transact-sql?view=sql-server-ver15

IF @Variable = 'True'
BEGIN
   THROW 50000, 'Error', 1;
END

而且,顺便说一句,您应该强烈考虑不要在代码中使用诸如“true”或“false”之类的文本文字,而是尽可能选择BIT数据类型来实现相同的效果。

于 2021-08-27T12:30:45.957 回答