第12章存储过程与用户存储过程设计.ppt

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

(3)也可以两种方法混合使用,一旦使用了 @name = value 形式之后,所有后续的参数就必须以 @name = value 的形式传递。 比如: EXEC P_学生选课信息 计算机, @课名=数据结构 * 【例12-7】使用OUTPUT参数的存储过程及其执行 首先创建存储过程 USE 教学管理 GO CREATE PROCEDURE P_成绩检索和平均 (@学号 CHAR(7), @平均成绩 FLOAT OUTPUT) AS SELECT S.学号,姓名,课号,成绩 FROM 学生表 S, 开课表 O, 选课表 E WHERE S.学号=@学号 AND E.学号=S.学号 AND E.开课号=O.开课号 SELECT @平均成绩 =AVG(成绩) FROM 学生表 S, 开课表 O, 选课表 E WHERE S.学号=@学号 AND E.学号=S.学号 AND E.开课号=O.开课号 RETURN GO * 然后在查询分析器中调用 Scorequery 存储过程 DECLARE @学号 CHAR(7),@平均成绩 FLOAT SET @学号=S060102 EXEC P_成绩检索和平均 @学号, @平均成绩 OUTPUT IF @平均成绩 =90 SELECT 该学生的成绩=优秀,平均成绩=rtrim(cast(@平均成绩 as VARCHAR(20))) IF @平均成绩 =80 AND @平均成绩 90 SELECT 该学生的成绩=良好,平均成绩=rtrim(cast(@平均成绩 as VARCHAR(20))) IF @平均成绩 =70 AND @平均成绩 80 SELECT 该学生的成绩=中等,平均成绩= rtrim(cast(@平均成绩 as VARCHAR(20))) IF @平均成绩 =60 AND @平均成绩 70 SELECT 该学生的成绩=及格,平均成绩= rtrim(cast(@平均成绩 as VARCHAR(20))) IF @平均成绩 60 SELECT 该学生的成绩=不及格,平均成绩=rtrim(cast(@平均成绩 as VARCHAR(20))) * 学号 姓名 课号 成绩 —————————————————————————— 1 S060102 张小芬 C01001 93.0 2 S060102 张小芬 C01003 NULL 3 S060102 张小芬 C02001 NULL 该学生成绩 平均成绩 —————————————————————————— 优秀 93 * 12.4 带状态参数的存储过程及实例分析 12.4.1 存储过程执行状态值的返回 (1)系统自动返回 无论什么时候执行存储过程,总要返回一个结果码,用以指示存储过程的执行状态。 如果存储过程执行成功,返回的结果码是0;如果存储过程执行失败,返回的结果码目前是一个0 到 -14的负数。 按以下语法只要执行存储过程并用@return_status接收状态值即可: EXECUTE @return_status = procedure_name * (2)用RETURN语句 RETURN语句的功能是:从查询或过程中无条件退出。RETURN 即时且完全,可在任何时候用于从过程、批处理或语句块中退出。不执行位于 RETURN 之后的语句。 语法格式: RETURN [ integer_expression ] * 参数说明: integer_expression是返回的整型值。存储过程可以给调用过程或应用程序返回整型值。返回类型可以选择是否返回int。 除非特别指明,所有系统存储过程返回 0 值表示成功,返回非零值则表示失败。 注释 当用于存储过程时,RETURN不能返回空值。如果过程试图返回空值(例如,使用 RETURN @status且@status是NULL),将生成警告信息并返回0值。 在执行当前过程的批处理或过程内,可以在后续Transact-SQL语句中接收用RETURN语句返回的状态值,但必须以下列格式执行当前存储过程: EXECUTE @return_status = procedure_name * 【例12-8】从过程返回,状态值有系统返回过程执行成功的默认值 CREATE PROCEDURE P_查询教师开课 (@姓名 CHAR(10)=NULL) AS IF @姓名 IS NULL BEGIN PRINT 必须指定教师姓名 END ELSE BEGI

文档评论(0)

3471161553 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档