网站大量收购闲置独家精品文档,联系QQ:2885784924

《错误信息处理-副本》-公开课件.pptVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
错误信息处理 为了增强存储过程的效率,应使用错误信息向用户传达事务状态(成功或失败) 可在错误处理逻辑中检查下列错误:返回码、SQL Server 错误、用户定义的错误信息 RETURN 语句 从查询或存储过程无条件返回,同时可以返回一个整数状态值(返回码) 返回码为0表示成功。若用户不提供返回码,则返回 SQL Server 的返回码。用户定义的返回码优先级高于系统提供的返回码 错误信息处理(续) 错误信息处理(续) sp_addmessage 系统存储过程 允许开发者创建用户定义错误信息,指定消息号、严重级别和消息文本,可在SYS.MESSAGES中查看 错误信息处理(续) @@error 函数 @@error 系统函数包含了最近执行的 Transact-SQL 语句的错误号,随着每一条语句的执行而更新 使用 @@error 系统函数来检测特定的错误号或有条件地退出存储过程 RAISERROR 语句 返回用户定义的错误信息并设系统标志,记录发生的错误 错误信息处理(续) RAISERROR语句的用法如下: 错误信息处理(续) 结构化异常处理的语法 TRY··· CATCH 块提供结构 TRY 块包含受保护的事务 CATCH 块处理错误发生时执行事务 处理错误的准则 处理错误的准则 练习 1.首先自定义一个错误号为50512的用户自定义错误,错误的严重级别为10,错误的文本消息为’Can’t 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 = Can’t find the customer ID:%s at table Customers , @with_log =true 练习答案 创建存储过程的语句如下 CREATE PROC ExistCustomerID @CustomerID char (5) AS SELECT CustomerID From Customers WHERE CustomerID=@CustomerID IF @@ROWCOUNT=0 BEGIN RAISERROR(50512, 10, 1, @CustomerID) RETURN END RETURN 0 CREATE PROCEDURE dbo.getorders @customerid nchar(10) AS select orderid,customerid,employeeid from orders where customerid=@customerid return (@@rowcount) 示例 exec sp_addmessage @msgnum=50320, @severity=16, @msgtext=error pass_score., @with_log=true, @lang = us_english RAISERROR (msg_id | msg_str,severity, state WITH option[,...n]]) msg_id:在sysmessages系统表中指定用户定义错误信息 msg_str:用户定义的特定信息,最长255个字符 severity:定义严重性级别。用户可使用的级别为0–18级 state:表示错误的状态,1至127之间的值 option:指示是否将错误记录到服务器错误日志中 问题: 当用户调用存储过程时,传入的及格线参数不 在0~100之间时,将弹出错误警告,终止存储过程的执行。 CREATE PROCEDURE proc_stu @notpassSum int OUTPUT, --输出参数 @writtenPass int=60, --默认参数放后 @labPass int=60 --默认参数放后 AS IF (NOT @writtenPass BETWEEN 0 AND 100) O

文档评论(0)

小米兰 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档