SQLserver 存储过程执行错误记录到表 
 
From: http://blog.csdn.net/leshami/article/details/51333650

对于在执行存储过程中碰到的一些错误,如果未及时捕获或者说传递给前端应用程序来,在这样的情形下,故障的排查显得尤为困难。基于此,我们可以可以将这些错误信息记录到日志,同时也可以将其传递给前端应用程序。
如本文的示例。

一、将错误信息记录到表

CREATE TABLE ErrorLog
(
         ID             INT IDENTITY (1,1) NOT NULL,
         ErrorNumber    INT,
         ErrorMessage   VARCHAR(1000),
         ErrorSeverity  INT,
         ErrorState     INT,
         ErrorLine      INT,
         ErrorProcedure VARCHAR(128),
         ErrorDate      datetime
);

CREATE PROCEDURE CatchErrorDemo
AS --相关业务逻辑

BEGIN TRY
        SELECT  1 / 0;
    END TRY
--相关错误捕获
    BEGIN CATCH
        PRINT 'Error Number:' + CAST(ERROR_NUMBER() AS VARCHAR(10));
        PRINT 'Error Serverity: ' + CAST(ERROR_SEVERITY() AS VARCHAR(10));
        PRINT 'Error State: ' + CAST(ERROR_STATE() AS VARCHAR(10));
        PRINT 'Error Procedure: ' + ERROR_PROCEDURE();
        PRINT 'Error Line: ' + CAST(ERROR_LINE() AS VARCHAR(10));
        PRINT 'Error Message: ' + ERROR_MESSAGE();
        INSERT  INTO ErrorLog
                ( ErrorNumber ,
                  ErrorSeverity ,
                  ErrorState ,
                  ErrorProcedure ,
                  ErrorLine ,
                  ErrorMessage ,
                  ErrorDate
                )
        VALUES  ( ERROR_NUMBER() ,
                  ERROR_SEVERITY() ,
                  ERROR_STATE() ,
                  ERROR_PROCEDURE() ,
                  ERROR_LINE() ,
                  ERROR_MESSAGE() ,
                  GETDATE()
                )

END CATCH;

--执行相关存储过程,并查询日志表,同时与系统消息表进行对比
EXEC CatchErrorDemo;
SELECT * FROM ErrorLog;

二、传递错误信息

CREATE PROC CatchErrorDemo2
    @a INT ,
    @rtn VARCHAR(20) OUTPUT ,
    @rtn_message VARCHAR(200) OUTPUT
AS
    BEGIN
        BEGIN TRY
            DECLARE @result INT;

SET @result = 'A' + @a;
        END TRY
        BEGIN CATCH
            SET @rtn = @@ERROR;

SET @rtn_message = 'Error Number: '
                + CAST(ERROR_NUMBER() AS VARCHAR(10)) + ' Error Serverity: '
                + CAST(ERROR_SEVERITY() AS VARCHAR(10)) + ' Error State: '
                + CAST(ERROR_STATE() AS VARCHAR(10)) + ' Error Procedure: '
                + ERROR_PROCEDURE() + ' Error Line: '
                + CAST(ERROR_LINE() AS VARCHAR(10)) + ' Error Message: '
                + ERROR_MESSAGE();
        END CATCH;
    END;
GO

--调用存储过程
DECLARE @rtn INT ,
    @rtn_message VARCHAR(200);
EXEC CatchErrorDemo2 0, @rtn OUTPUT, @rtn_message OUTPUT;
PRINT @rtn;
PRINT @rtn_message;

--Result:
245
Error Number: 245 Error Serverity: 16 Error State: 1 Error Procedure: CatchErrorDemo2 Error Line: 10
Error Message: 在将 varchar 值 'A' 转换成数据类型 int 时失败。

转载于:https://blog.51cto.com/57388/1859828

SQL Server -- SQLserver 存储过程执行错误记录到表相关推荐

  1. sql server中存储过程提示错误

    1.今天写存储过程是运行时总是提示如下错误: Subquery returned more than 1 value. This is not permitted when the subquery ...

  2. SQL Server分页存储过程实践(图解)

    下面来对SQL Server分页存储过程进行一下实做.图解成功的各个步骤. 一 找到大数据量的示例表 分页都是针对大记录数的表:反之有大记录数的表,可能就需要分页.例如银行用户表,就会上千万.下面先做 ...

  3. [翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)

    原文地址:http://www.dotnetbips.com/articles/70eff218-3da0-4f6f-8f8d-eeea65193f2c.aspx[原文×××] [翻译]使用C#创建S ...

  4. SQL Server中的CLR编程——用.NET为SQL Server编写存储过程和函数

    很早就知道可以用.NET为SQL Server2005及以上版本编写存储过程.触发器和存储过程的,不过之前开发的系统要么因为历史原因用的是SQL2000要么根本用不着在SQL Server中启用CLR ...

  5. SQL Server 的存储过程[转]

    本文从如下几个方面讲述一下存储过程: ●  存储过程的概念 ●  存储过程的优点 ●  存储过程的分类 ●  存储过程的接口 ●  存储过程的解析.编译过程 ●  存储过程的安全性 ●  如何查看存储 ...

  6. Sql Server 2005 存储过程分页

    Sql Server2005的一个新特性便是我等了很久的Row_Number(),以前用Oracle时用rownumber写分页存储过程很方便:) 下面是我做的一个小小的测试,测试我原来在sql se ...

  7. SQL Server在存储过程中编写事务处理代码的三种方法

    SQL Server中数据库事务处理是相当有用的,鉴于很多SQL初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码.希望能够对您有所 ...

  8. 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...

    作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...

  9. VB实现SQL Server 2000存储过程调用

    VB实现SQL Server 2000存储过程调用 幸运好时机,注册赢手机 2005 三星yepp夏季数码旅游风 [文章信息] 作者: 刘兴权 陈奇 吴兵 刘雪松 时洪飞 时间: 2005-05-19 ...

最新文章

  1. HDU1269(强连通分量)
  2. 一张图读懂八大全国一体化算力网络国家枢纽节点一览
  3. html页面选择指定条件在下方显示,如何从符合特定条件的HTML中找到CSS选择器?...
  4. 开发提交审核流程_小程序如何提交审核,多久能通过?
  5. OpenStack Weekly Rank 2015.08.24
  6. 为普及再助一把力!《2021年中国低代码/无代码市场研究报告》正式发布
  7. 第四篇:new和delete的基本用法
  8. mongodb 3.4 集群搭建升级版 五台集群
  9. 习题1.8 二分查找 (20 分) 数据结构练习
  10. lua本学习笔记功能
  11. 企业信息管理- 近期功能改善
  12. 【严重抗议】主播都是阿里程序猿的直播,他们也是够了!
  13. 风险预测模型_【期刊导读】长期NA治疗的慢乙肝患者也有专属肝癌风险预测模型...
  14. Bug--Tomcat Error start child
  15. eclipse 使用svn导入web项目
  16. oracle客户端查看版本号,Oracle 版本查看及版本号说明
  17. proxy_redirect参数的作用
  18. php后台框架整理集锦
  19. learun敏捷框架工作流:企业效率助推神器
  20. (附源码)php积极心理学交流网站 毕业设计 100623

热门文章

  1. android 判断对象,Android网络判断知识小结
  2. 机器学习问题总结(02)
  3. 楼主考南师计算机学硕,【图片】2019南师大新传学硕考研经验贴【南京师范大学研究生吧】_百度贴吧...
  4. python数组初始化_Python Numpy 数组的初始化和基本操作
  5. STL源码剖析 算法章节 算法总览
  6. Dapp简单的投票小例子
  7. Linux命令:grep命令详解
  8. 软件工程师的十个“不职业”行为
  9. 解决:[ERROR] Error executing Maven. [ERROR] 1 problem was encountered while building the effective set
  10. 在 js 中怎样获得 checkbox 里选中的多个值?(jQuery)