收藏 分销(赏)

错误信息处理副本.pptx

上传人:鼓*** 文档编号:14717889 上传时间:2026-11-04 格式:PPTX 页数:14 大小:1.56MB 下载积分:8 金币
下载 相关
错误信息处理副本.pptx_第1页
第1页 / 共14页
错误信息处理副本.pptx_第2页
第2页 / 共14页


点击查看更多>>
资源描述
错误信息处理副本,错误信息处理(续),CREATE PROCEDURE dbo.getorders,customerid nchar(10),AS,select orderid,customerid,employeeid,from orders,where customerid=customerid,return (rowcount),示例,错误信息处理(续),sp_addmessage 系统存储过程,允许开发者创建用户定义错误信息,指定消息号、严重级别和消息文本,可在,SYS.MESSAGES,中查看,exec sp_addmessage,msgnum=50320,severity=16,msgtext=,error pass_score.,with_log=,true,lang=,us_english,error 函数,error 系统函数包含了最近执行的 Transact-SQL 语句的错误号,随着每一条语句的执行而更新,使用 error 系统函数来检测特定的错误号或有条件地退出存储过程,RAISERROR 语句,返回用户定义的错误信息并设系统标志,记录发生的错误,错误信息处理(续),RAISERROR(msg_id|msg_str,severity,state WITH option,.n),RAISERROR语句的用法如下,:,msg_id:在sysmessages系统表中指定用户定义错误信息,msg_str:用户定义的特定信息,最长255个字符,severity:定义严重性级别。用户可使用的级别为018级,state:表示错误的状态,1至127之间的值,option:指示是否将错误记录到服务器错误日志中,错误信息处理(续),问题:,当用户调用存储过程时,传入的及格线参数不,在0100之间时,将弹出错误警告,终止存储过程的执行。,错误信息处理(续),CREATE PROCEDURE proc_stu,notpassSum int OUTPUT,-输出参数,writtenPass int=60,-默认参数放后,labPass int=60 -默认参数放后,AS,IF(NOT writtenPass BETWEEN 0 AND 100),OR(NOT labPass BETWEEN 0 AND 100),BEGIN,RAISERROR,(,及格线错误,请指定0100之间的分,数,统计中断退出,16,1),RETURN -立即返回,退出存储过程,END,错误处理,引发系统错误,指定错误的严重级别16,调用状态为1(默认),并影响ERROR系统变量的值,错误信息处理(续),笔试及格线:默认为60分,机试及格线:默认为60分,SELECT stuName,stuInfo.stuNo,writtenExam,labExam FROM stuInfo INNER JOIN stuMarks,ON stuInfo.stuNo=stuMarks.stuNo,WHERE writtenExamwrittenPass,OR labExamlabPass,SELECT,notpassSum=COUNT(stuNo),FROM stuMarks WHERE writtenExamwrittenPass,OR labExam=3,print 未通过人数:+convert(varchar(5),sum)+人,超过60%,及格分数线还应下调,ELSE,print 未通过人数:+convert(varchar(5),sum)+人,已控制在60%以下,及格分数线适中,GO,笔试及格线误输入604分,如果执行了RAISERROR语句,系统全局ERROR将不等于0,表示出现了错误,错误信息处理(续),结构化异常处理的语法,TRY,CATCH 块提供结构,TRY 块包含受保护的事务,CATCH 块处理错误发生时执行事务,CREATE PROCEDURE dbo.AddData a int,b int,AS,BEGIN TRY,INSERT INTO TableWithKey VALUES(a,b),END TRY,BEGIN CATCH,SELECT ERROR_NUMBER()ErrorNumber,ERROR_MESSAGE()Message,END CATCH,9.4.1 结构化异常处理的语法,处理错误的准则,9.4.2 处理错误的准则,在TRY后立即创建CATCH块,在CATCH块中回滚错误事务,可以捕获错误信息,使用XACT_ABORT ON 和XACT_STATE,指定当 Transact-SQL 语句出现运行时错误时,SQL Server 是否自动回滚到当前事务。,指示会话是否具有活动事务以及是否可以提交事务。,处理错误的准则,9.4.2 处理错误的准则,SET XACT_ABORT ON,BEGIN TRY,BEGIN TRAN,.,COMMIT TRAN,END TRY,BEGIN CATCH,IF(XACT_STATE()=-1-uncommitable,ROLLBACK TRAN,ELSE,IF(XACT_STATE()=1-commitable,COMMIT TRAN,END CATCH,练习,1首先自定义一个错误号为50512的用户自定义错误,错误的严重级别为10,错误的文本消息为Cant find the customer ID.,另外消息中还要加上表名和输入的CustomerID,并且当发生消息时将消息写入 Microsoft Windows NT 应用程序日志中。然后创建一个名为ExistCustomerID的存储过程,以用它来找出SQL SERVER中的northwind数据库的Customer表中,指定的CustomerID是否存在,如果存在返回0,如果不存在返回错误号50512,并将消息写入 Microsoft Windows NT 应用程序日志中。写出定义错误消息和创建存储过程的语句。,练习答案,定义自定义错误消息,EXEC sp_addmessage,msgnum=50512,severity=10,msgtext=Cant find the customer ID:%s at table Customers,with_log=true,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服