关于SQLServer2005的学习笔记——异常捕获及处理

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:
SQLServer2005 提供了类似于 C# 和 C++ 语言中的异常处理的错误处理机制。
 
Transact-SQL 语句组可以包含在 TRY 块中。如果 TRY 块内部发生错误,则会将控制传递给 CATCH 块中包含的另一个语句组。
 
相关错误消息如下:
ERROR_NUMBER() 返回错误号。
ERROR_SEVERITY() 返回严重性。
ERROR_STATE() 返回错误状态号。
ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。
ERROR_LINE() 返回导致错误的例程中的行号。
ERROR_MESSAGE() 返回错误消息的完整文本。
 
-- 让我们看看 SQLServer2000 下的错误捕获,对于某些错误实际上是无法捕获的
DECLARE @ErrNum INT,@RowCount INT;
-- 能够捕获的 0 做除数错误
SELECT 1/0;
SET @ErrNum=@@error;
SET @RowCount=@@rowcount;
PRINT 'Encount ERROR';
PRINT @ErrNum
PRINT @RowCount
-- 不能被捕获的数据转换错误
SELECT 'A'+1
SET @ErrNum=@@error;
SET @RowCount=@@rowcount;
PRINT 'Encount Serious ERROR';
PRINT @ErrNum
PRINT @RowCount 
 
 
-- 创建一张通用日志表,以捕获代码执行过程中的相关错误
CREATE TABLE LogTable
(
         ID             INT IDENTITY (1,1) NOT NULL,
         ErrorNumber    INT,
         ErrorMessage   VARCHAR(1000),
         ErrorSeverity  INT,
         ErrorState     INT,
         ErrorLine      INT,
         ErrorProcedure VARCHAR(128)
); 
 
 
-- 创建一个存储过程,以进行错误捕获
CREATE PROCEDURE TestTryCatchProc
AS
-- 相关业务逻辑
BEGIN TRY
SELECT 1/0;
END TRY
-- 相关错误捕获
BEGIN CATCH
    PRINT 'Error Numberv' + 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 LogTable(ErrorNumber,ErrorSeverity,ErrorState,ErrorProcedure,ErrorLine,ErrorMessage)
         VALUES(ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_PROCEDURE(),ERROR_LINE(),ERROR_MESSAGE())
    -- 此处可以先对相关错误进行修正
END CATCH;
-- 执行相关存储过程,并查询日志表,同时与系统消息表进行对比
EXEC TestTryCatchProc
SELECT * FROM LogTable
SELECT * FROM sys.messages WHERE message_id=8134 AND language_id=2052 
 
 
参考
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/8c16ecdf-68f4-4a2a-b594-086e3344e58a.htm
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/248df62a-7334-4bca-8262-235a28f4b07f.htm
 





本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/310442 ,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
MSSQL系列之十四 无限极分类的解决办法
MSSQL系列之十四 无限极分类的解决办法
67 0
|
数据库连接 PHP 数据库
【PHP开发专栏】PHP错误处理与异常捕获
【4月更文挑战第30天】PHP是流行的服务器端脚本语言,广泛用于动态网站和应用开发。本文深入探讨PHP的错误处理和异常捕获机制,分为三部分:首先介绍PHP错误处理,包括错误级别(如E_NOTICE、E_WARNING、E_ERROR)和错误处理函数;其次,讲解异常捕获,利用try-catch处理程序错误,自定义异常类;最后,讨论两者在数据库操作、文件操作和网络请求等场景的应用及最佳实践。示例代码展示了如何自定义错误处理器和异常处理。
144 2
|
Oracle 小程序 关系型数据库
laravel5.8(十四)连接oracle数据库
首先确定你的PHP已经支持oracle数据库的链接。PHP需要安装OCI8扩展。 确定PHP可以链接ORACLE数据库之后。我们使用composer安装laravel支持oracle链接的插件 yajra/laravel-oci8 欢迎访问个人博客 guanchao.site 欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的” 一:使用composer安装 yajra/laravel-oci8 1 :运行如下命令: bash 复制代码 composer require yajra/laravel-oci8 2 :安装过程中可能会报错,不要纠结那些报错,最简单的解决办法:
244 0
|
程序员 PHP
什么是PHP的异常?为什么会有异常?底层原理是什么?
什么是PHP的异常?为什么会有异常?底层原理是什么?
126 0
|
Java Maven
Java开发常见异常及解决办法总结
在IDEA中创建Maven项目,在pom.xml中引入依赖时,有时候会报错Failed to read artifact descriptor for xxx。
Java开发常见异常及解决办法总结
|
Java Shell API
Android开发 常见异常和解决办法(一)(上)
Android Studio是Android开发的理想工具,但是由于版本的更新和配置的差异,会出现很多问题,下面是以《第一行代码 第二版》为基础进行开发学习可能遇见的一些问题及其解决办法。
Android开发 常见异常和解决办法(一)(上)
|
XML Android开发 数据格式
Android开发 常见异常和解决办法(一)(下)
Android Studio是Android开发的理想工具,但是由于版本的更新和配置的差异,会出现很多问题,下面是以《第一行代码 第二版》为基础进行开发学习可能遇见的一些问题及其解决办法。
Android开发 常见异常和解决办法(一)(下)
|
机器学习/深度学习 数据可视化 数据挖掘
视频理解的基本介绍与一些2D/3D的解决方法
视频理解的基本介绍与一些2D/3D的解决方法
644 0
视频理解的基本介绍与一些2D/3D的解决方法
|
SQL 关系型数据库 MySQL
数据库编程 MySQL 常见异常和解决办法
mysqlslap 可以用于模拟服务器的负载,并输出计时信息。测试时,可以指定并发连接数,可以指定 SQL 语句。如果没有指定 SQL 语句,mysqlslap 会自动生成查询 schema 的 SELECT 语句。但是可能会报错
|
SQL 缓存 前端开发
Java开发中常见报错及解决办法
在项目开发中,往往会遇到很多错误,有些是代码有误,而有些则是其他原因。接下来一起看看常见的报错及解决办法(小白整理,大牛勿喷)。