- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验11 存储过程和用户自定义函数
实验目的
掌握通过企业管理器创建、修改、删除存储过程和用户自定义函数的方法
学会编写存储过程和用户自定义函数
掌握存储过程的执行方法
学会编写、调用三类用户自定义函数
实验准备
学习存储过程和用户自定义函数相关知识。
已掌握常程序控制流语句。
熟练使用T-SQL完成数据查询和程序设计。
还原studentdb数据库
实验内容和步骤
打开企业管理器,展开studentdb子目录,选中“存储过程”,单击鼠标右键,弹出快捷菜单,选择【新建存储过程(S)…】,打开新建存储过程窗口,如图11- 1。
图11- 1 新建存储过程
新建并执行存储过程“字母打印”。
在新建存储过程窗口输入以下代码。
CREATE PROCEDURE 字母打印 AS
注解:该存储过程是将26个小写英文字母按a~z的顺序输出,其中ascii()函数——返回字符对应ASCII码,char()函数——把ASCII码转换成对应字符。
输入完成后,单击【检查语法】按钮,确认输入内容正确后,单击【确认】按钮完成存储过程的创建。
打开查询分析器,输入:
exec 字母打印
执行,查看运行结果。
修改存储过程“字母打印”并执行。
在企业管理器存储过程列表窗格中,选中存储过程“字母打印”,弹出快捷菜单,选择【属性(R)】,或直接双击该存储过程,打开属性窗口,如图11- 2。
图11- 2 存储过程“字母打印”属性窗口
修改代码内容,将“print char(ascii(a)+@count)”改为“print char(ascii(A)+@count)”。
单击【确认】按钮,完成存储过程的修改。
重新在查询分析器执行该存储过程,查看运行结果。
新建并执行带输入参数的存储过程。
在企业管理器中新建存储过程“成绩查询”,代码如下:
在查询分析器窗口中,选择studentdb数据库。要求:通过存储过程“成绩查询”查看学号为“2007224117”的成绩。
方法一:输入exec 成绩查询 ‘2007224117’,并执行。
方法二:输入
执行,查看该同学的成绩。
注:以上是执行含输入参数存储过程的常用方法,参数可以直接通过值传递,也可以通过变量传递。
练习:请新建存储过程“学生信息”,输入参数仍为学号,返回学号对应的“学生”表信息,并通过该存储过程查看学号为“2007224117”的个人信息。
新建带返回参数的存储过程并执行。
在企业管理器中新建存储过程“学生平均成绩”,代码如下:
在查询分析器窗口中,选择studentdb数据库,输入代码:
执行,查看运行结果。
注:执行带有返回参数的存储过程时,必须先定义变量(存返回值),exec语句须加output关键字。
练习:请新建存储过程“班级平均成绩”,输入参数为专业、年级、班序号,输出对应的平均总评成绩。并使用该存储过程查询专业为1009,年级为2008,班序号为1的平均总评成绩。
新建存储过程“学生成绩分析”,输入参数“学号”,判断该学号对应平均考试成绩若在90分及以上,认为优秀,60分以下为差,其他情况为一般,并把结果存在“学生考试评价”表中。
在查询分析器中输入以下代码,生成【学生考试评价】表。
CREATE TABLE [dbo].[学生考试评价] (
[学号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[平均成绩] [int] NULL ,
[考试评价] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[学生考试评价] ADD
CONSTRAINT [PK_学生考试评价] PRIMARY KEY CLUSTERED
(
[学号]
) ON [PRIMARY]
GO
录入存储过程代码
注:IF的嵌套也可以通过CASE语句完成。参考:
set @评价=(case when @平均分=85 then 优秀
when @平均分=60 and @平均分85 then 一般
when @平均分60 then 差 end)
insert into 学生考试评价(学号,平均成绩,考试评价)
values(@学号,@平均分,@评价)
或者:
insert into 学生考试评价(学号,平均成绩,考试评价)
values(@学号,@平均分,(case when @平均分=85 then 优秀
when @平均分=60 and @平均分85 then 一般
when @平均分60 then 差 end))
运行存储过程。
新建用户自定义
文档评论(0)