欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于存储过程中RAISERROR的使用

程序员文章站 2022-04-02 16:10:14
...


我们一般用这种方式抛出异常:
RAISERROR (@ErrorMsg, 16, 1)

1, 如果我们在存储过程里面加了Try Catch模块, 那么执行到RAISERROR时会直接跳转到Catch模块里面.
例如:
DECLARE @ErrorMsg VARCHAR(2000)

BEGIN TRY
  SELECT 1

  RAISERROR ('报错了', 16, 1)

  SELECT 2
END TRY
BEGIN CATCH
  SELECT @ErrorMsg = ERROR_MESSAGE()
  RAISERROR (@ErrorMsg, 16, 1)
END CATCH

上述代码不会执行Select 2

2, 如果我们在存储过程里面没有加Try Catch模块.
例如:
  SELECT 1

  RAISERROR ('报错了', 16, 1)

  SELECT 2

上述代码执行顺序是:
Select 1
抛出异常
Select 2

这里的 Select 2 在绝大多数很多情况下是不需要执行的,
所以我们可以这样写
  SELECT 1

  RAISERROR ('报错了', 16, 1)
  RETURN

  SELECT 2


但是我们推荐尽量使用Try Catch模块
相关标签: SQL