单元8 存储过程.ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单元8 存储过程

指导——存储过程获指定学期课程数2-1 训练要点: 使用输入、输出参数的存储过程完成数据查询,获得相关数据 需求说明: 查询获得指定学期开设的课程数和总课时 如果学期名称为空,则显示“学期名称不能为空”,并返回 讲解需求说明 指导——存储过程获指定学期课程数2-2 实现思路: 输入参数是学期名称 输出参数是课程数和总课时数 查询获得指定学期所开设的课程、课时 查询该学期的总课程数、总课时数 完成时间:20分钟 CREATE PROCEDURE usp_query_subject @CourseNum INT OUTPUT, @HourNum INT OUTPUT, @GradeName VARCHAR(50) AS IF LEN(@GradeName) = 0 BEGIN PRINT 学期名称不能为空 RETURN END PRINT ---------学期课程信息如下------------ SELECT GradeName,SubjectName,ClassHour FROM Grade LEFT JOIN Subject ON Grade.GradeId=Subject.GradeId WHERE GradeName=@GradeName SELECT @CourseNum=COUNT(0), @HourNum=SUM(ClassHour) FROM Grade INNER JOIN Subject ON Grade.GradeId=Subject.GradeId WHERE GradeName=@GradeName GO 共性问题讲解 常见调试问题及解决办法 代码规范问题 共性问题集中讲解 常见错误 CREATE PROCEDURE usp_query_subject @CourseNum INT OUTPUT, @GradeName VARCHAR(50) AS … … GO EXEC usp_query_subject @GradeName= S1, @CourseNum OUTPUT GO 存储过程的调用语句中数据类型和参数位置要匹配 EXEC usp_query_subject @CourseNum OUTPUT,@GradeName=S1 , 存储过程最后一个参数后不能有逗号 DECLARE @CourseNum INT DECLARE @GradeName varchar(50) 没有声明变量 处理存储过程中的错误 使用PRINT语句显示错误信息 错误信息是临时的,只能显示给用户 RAISERROR 显示用户定义的错误信息时 可指定严重级别 设置系统变量@@ERROR 记录所发生的错误等 使用RAISERROR 语句 RAISERROR (msg_id | msg_str,severity, state WITH option[, ... n]]) RAISERROR语句的用法如下: msg_id:在sysmessages系统表中指定用户定义错误信息 msg_str:用户定义的特定信息,最长255个字符 severity:定义严重性级别。用户可使用的级别为0–18级 state:表示错误的状态,1至127之间的值 option:指示是否将错误记录到服务器错误日志中 完善上例。调用存储过程时,如果传入的及格线参数不 在0~100之间时,将弹出错误警告,终止存储过程的执行 使用RAISERROR 示例2-1 CREATE PROCEDURE usp_stu @UnPassNum OUTPUT, @SubjectName NCHAR(10), @Pass int = 60 AS IF (NOT @Pass BETWEEN 0 AND 100) --判断及格线是否不在取值范围内 BEGIN RAISERROR (及格线错误,请指定-之间的分数,统计中断退出,16,1) RETURN END … … GO 错误处理 RAISERROR()引发系统错误,指定错误的严重级别16,调用状态为1(默认),并影响@@ERROR系统变量的值 立即返回,退出存储过程 演示案例6:创建有错误处理的存储过程 使用RAISERROR示例2-2 /*---调用存储过程,测试RAISERROR语句----*/ DECLARE @UnPassNum int EXEC usp_stu @UnPassNum OUTPUT,Java logic,109

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档