关于存储过程中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模块
上一篇: php上传文件到远程服务器的方法