大家好,我有一个存储过程,它检查一个名为 valid 的表中是否存在 batch_id。如果存在,我想中止程序的其余部分。我有
If exists(select batch_id
from valid
Where batch_id=@bid)
Raiserror ('file has been extracted already',16,1)
但它不会中止其余的程序
raiserror
不会中止批次,cf。微软的文档。您可能已经获得了这种印象,因为某些客户端可能会取消对超过某个严重性阈值的错误的查询。
要在出错时退出过程,请引发错误并返回否定状态。我通常return -50000 - @@error
会确保我在指定的范围内。