`
zheyiw
  • 浏览: 997292 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于存储过程中RAISERROR的使用

    博客分类:
  • SQL
SQL 
阅读更多


我们一般用这种方式抛出异常:
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模块
分享到:
评论

相关推荐

    存储过程中RAISERROR()函数

    存储过程中RAISERROR()函数存储过程中RAISERROR()函数存储过程中RAISERROR()函数存储过程中RAISERROR()函数存储过程中RAISERROR()函数存储过程中RAISERROR()函数

    SQL Server自定义异常raiserror使用示例

    如下代码:在存储过程中,抛出自定义异常,然后在catch块中捕获自定义异常。 IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='my_sp_test' AND TYPE='P') BEGIN DROP PROCEDURE my_sp_test; END; GO create ...

    T-SQL强化(RAISERROR详解,SQL 注入, OUTPUT , WITH RECOMPILE ,sp_addmessage

    RAISERROR详解,SQL 注入,使用 OUTPUT 游标参数,使用 WITH RECOMPILE 选项,使用sp_addmessage添加自定义消息.

    用SQL Server数据库处理数据层错误

    SQLServer的SQL对话让你能够轻松地处理可能会在存储进程、函数里发生的非致命错误,但是并不是所有的...对于其他所有的错误,你可以使用下面的技术:事务、@@Error、RAISERROR、用存储过程返回值、涵盖所有的数据库。

    SQL Server2005基础教程

    之后以前面建立的示例数据库为基础,深入讲解各种数据操作的方法,从数据检索、插入、更新、删除,到函数、触发器、存储过程的使用;最后,概略讲述了SQL Server Reporting Services。书中还针对数据安全性方面的...

    sqlserver2000基础(高手也有用)

    7.2.4 使用SQL Server的系统存储过程处理分页 216 7.3 特殊要求的分页处理 217 7.3.1 随机显示的分页处理 217 7.3.2 分类数据的分页处理 221 第 8 章 树形数据处理 223 8.1 单编号处理法 223 8.1.1 ...

    SQL SERVER 2000开发与管理应用实例

    本书不但融合了作者在使用SQL Server 2000过程中遇到的各种常见问题和应用案例,还总结了作者几年来在CSDN 社区SQL Server版所解决的大量问题,面向实际项目需求,涉及不同类型的应用,能够多角度地引导读者学习相关...

    病人资料管理系统

    相比之下,国内的相当数量的中小型医院的病人资料工作流程还采用相对保守的人工工作方式,数据信息的查询和存储的成本较高,而且效率还很低下。所以需要一种对于医院的病人资料管理系统来高效、低成本、便捷的进行...

    sqlserver触发器例子

    一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约`束。 二﹕ SQL Server为每个触发器都创建了...

    数据库设计和高级查询课程课件(SQL Server版)

    chapter6\理论部分\源代码\SG6-Source\示例4-2:带默认参数的存储过程2.sql chapter6\理论部分\源代码\SG6-Source\示例5:带输出参数的存储过程.sql chapter6\理论部分\源代码\SG6-Source\示例6:raiserror语句.sql ...

Global site tag (gtag.js) - Google Analytics