怎样捕捉存储过程执行过程中出现的错误?
2009-12-02 17:37
295 查看
使用sql2005的try...catch机制
一、新建一个记录错误的表:
OrderNum nvarchar(14)
ErrorInfo nvarchar(MAX)
CreateDate datetime
二、存储过程中使用try...catch(本例还使用了事务)
BEGIN TRY
--启用事务--
begin tran
set xact_abort on
--这里写正常要执行的代码
commit tran --提交事务
END TRY
BEGIN CATCH
DECLARE @strErrorMessage NVARCHAR(4000);
set @strErrorMessage = cast(ERROR_LINE() as nvarchar)+'行,'+ERROR_MESSAGE();
rollback tran --出现异常回滚事务
insert into tt_ppipnerror(OrderNum,ErrorInfo) values(@OrderNum,@strErrorMessage); --将错误日志记录到错误日志表中
END CATCH
ERROR_NUMBER() 返回错误号。
ERROR_MESSAGE() 返回错误消息的完整文本。此文本包括为任何可替换参数(如长度、对象名或时间)提供的值。
ERROR_SEVERITY() 返回错误严重性。
ERROR_STATE() 返回错误状态号。
ERROR_LINE() 返回导致错误的例程中的行号。
ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。
一、新建一个记录错误的表:
OrderNum nvarchar(14)
ErrorInfo nvarchar(MAX)
CreateDate datetime
二、存储过程中使用try...catch(本例还使用了事务)
BEGIN TRY
--启用事务--
begin tran
set xact_abort on
--这里写正常要执行的代码
commit tran --提交事务
END TRY
BEGIN CATCH
DECLARE @strErrorMessage NVARCHAR(4000);
set @strErrorMessage = cast(ERROR_LINE() as nvarchar)+'行,'+ERROR_MESSAGE();
rollback tran --出现异常回滚事务
insert into tt_ppipnerror(OrderNum,ErrorInfo) values(@OrderNum,@strErrorMessage); --将错误日志记录到错误日志表中
END CATCH
错误函数
TRY...CATCH 使用下列错误函数来捕获错误信息:ERROR_NUMBER() 返回错误号。
ERROR_MESSAGE() 返回错误消息的完整文本。此文本包括为任何可替换参数(如长度、对象名或时间)提供的值。
ERROR_SEVERITY() 返回错误严重性。
ERROR_STATE() 返回错误状态号。
ERROR_LINE() 返回导致错误的例程中的行号。
ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。
相关文章推荐
- 怎样捕捉存储过程执行过程中出现的错误?
- SQL Server 存储过程中的表变量名加上'[]'后出现执行错误
- mysql导入数据库中的存储过程和函数出现错误的解决办法
- 执行存储过程成功没有结果,采用 declare 定义,错误:字符串长度限制在范围 (1...32767)
- ORA-20000: ORU-10027: 执行存储过程的错误
- 存储过程中对某一句语句单独进行错误捕捉
- 执行存储过程出现:"不是有效的标识符。"
- LINQ TO SQL 怎样 执行存储过程并返回存储过程的临时表
- SQL存储过程中使用BEGIN TRY捕捉错误并保存
- MySQL运行存储过程出现1292错误
- Oracle报存储过程中调用DBLink同义词出现错误:PLS-00201: 必须声明标识符
- 解决导出excel中出现的错误:只能在执行 Render() 的过程中调用 RegisterForEventValidation
- 获取sql 中执行错误存储过程
- mysql执行存储过程中报权限不足的错误解决方法 3ff8
- JDBC连接执行 MySQL 存储过程报权限错误:User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted,
- MySQL运行存储过程出现1292错误
- ibatis执行存储过程出现阻塞
- MYSQL存储过程出现Result consisted of more than one row 错误的解决方法
- 执行脚本过程中出现^M: bad interpreter: No such file or directory错误解决方案
- 执行存储过程出现:"不是有效的标识符。"