一、实验目的

熟练掌握存储过程的定义和使用,理解存储过程在数据库的使用中能发挥出什么样的作用。

二、实验环境

硬件环境:PC

软件环境:Windows 10 、SQL Server 2008

--1、调用全局变量@@version和系统函数getdate()
--来显示SQL Server的版本号及当前系统时间。print '版本号:'+@@version+'系统时间:'+convert(char(50),getdate())--2、使用SQL语句创建无参数的存储过程并执行
--(1)问题描述:班主任经常会查询学生的学号、姓名、电话号码、家庭住址等信息(需设置别名),
--创建存储过程p1,并执行实现查询的操作。create procedure p1
as
select s_id '学号',s_name '姓名',s_telephone '电话号码',s_address '家庭住址'
from student
goexec p1
--(2)问题描述:系主任要查询“计算机16-1”班的学生姓名、班级、课程名称、成绩等信息
--(需设置别名),创建存储过程p2,并执行实现查询的操作。
create procedure p2
as
select s_name '姓名',c_name '班级',course_name '课程名称',grade '成绩'
from class cl,student s,s_c,course co
where cl.c_id=s.c_id and s.s_id=s_c.s_id and s_c.course_id=co.course_idand c_name='计算机16-1'
goexec p2
--(3)问题描述:创建存储过程p3,
--若存在学号为“2016010101”的学生记录,则删除此学生的基本信息及其选课信息,
--若不存在该学生,则显示“没有这个学生!”,同时显示学生表和成绩表中的信息,
--执行此存储过程实现以上操作。
create procedure p3
as
begin
if exists (select *from student where s_id='2016010101')begindelete from s_c where s_id='2016010101'delete from student where s_id='2016010101'print '删除该学生基本信息及选课信息成功!'end
elsebeginprint '没有这个学生!'select *from studentselect *from s_cend
end
goexec p3--(4)使用系统存储过程sp_helptext查看存储过程p3的定义文本。
exec sp_helptext p3--(5)问题描述:创建存储过程p4,检索学生的学号、姓名、性别、出生日期等信息(需设置别名),
--对定义语句进行加密处理,再使用系统存储过程sp_helptext查看定义文本。
create procedure p4
with encryption
as
select s_id '学号',s_name '姓名',s_sex '性别',s_borndate '出生日期' from student
goexec sp_helptext p4
--对象 'p4' 的文本已加密。--3、使用SQL语句创建带参数的存储过程并执行
--(1)问题描述:查询指定学生姓名的学生学号、姓名、电话号码和家庭住址等信息,
--创建存储过程pd1。并使用参数“王丽”执行该存储过程。
create procedure pd1
@sname varchar(20)
as
select s_id '学号',s_name '姓名',s_telephone '电话号码',s_address '家庭住址'
from student
where s_name=@sname
goexec pd1 '王丽'
--2016010201    王丽  13079452444 山东省烟台市--(2)问题描述:创建存储过程pd2,
--检索指定学生姓名的学号、姓名、课程号、成绩信息,使用参数“王丽”执行存储过程。
create procedure pd2
@sname varchar(20)
as
select s_c.s_id '学号',s_name '姓名',c_id '课程号',grade '成绩'
from student s,s_c
where s.s_id=s_c.s_id  and s_name=@sname
goexec pd2 '王丽'
--(3)问题描述:创建存储过程pd3,
--检索指定班级名称和课程名称的学生学号、姓名、班级名称、课程名称、成绩信息,
--使用参数“计算机16-1”和“数据库原理与应用”,执行该存储过程。
--(使用顺序法和提示法两种传参方式执行存储过程)
create procedure pd3
@cl_name varchar(20),
@co_name varchar(20)
as
select s_c.s_id '学号',s_name '姓名',c_name '班级',course_name '课程名称',grade '成绩'
from class cl,student s,s_c,course co
where cl.c_id=s.c_id and s.s_id=s_c.s_id and s_c.course_id=co.course_idand c_name=@cl_name and co.course_name=@co_name
go--使用两种传参方式执行存储过程
--(1)指定名称传递
--  exec 过程名 @参数名=值1,@参数名=值2……--与定义时的顺序可以不同
exec pd3 @co_name='数据库原理与应用',@cl_name='计算机16-1'
--(2)按位置传递
--   exec 过程名 值1,值2  --与定义时的顺序必须相同
exec pd3 '计算机16-1','数据库原理与应用'--4、使用SQL语句创建带默认参数、output参数的存储过程并执行
--(1)问题描述:创建存储过程pds1,
--向student表中插入记录,性别默认为“女”,
--若没有指定家庭住址,则默认值为“山东济南”,执行该存储过程。create procedure pds1
@sno char(20),@sname varchar(20),@sex char(2)='女',
@sborndate datetime,@senrolldate datetime,
@telephone char(11),@address varchar(30)='山东济南',@cid char(10)
as
begininsert into student values(@sno,@sname,@sex,@sborndate,@senrolldate,@telephone,@address,@cid)print '学生表插入新记录成功!'
end
goexec pds1
'2016010200','李小白',default,'2000-01-01','2018-09-01','12345678900',default,'20160101'--(2)问题描述:创建存储过程pds2,根据某学生的学号输出该学生的姓名、联系方式和家庭住址,
--使用2016010102作为实参,执行存储过程。
create procedure pds2
@sno char(20),
@sname varchar(20) output,
@telephone char(11)output,
@address varchar(30) output
as
beginselect @sname=s_name,@telephone=s_telephone,@address=s_address from student where s_id=@snoselect '姓名'=@sname,'联系方式'=@telephone,'家庭住址'=@address
end
godeclare @sname char(10)
declare @telephone char(11)
declare @address varchar(30)
exec pds2 '2016010102',@sname output,@telephone output,@address output--(3)创建存储过程pds3,向teacher表中插入记录,性别默认为“男”,
--若没有指定职称,则默认值为“讲师”,执行此存储过程。
create procedure pds3
@tno char(4),@tname varchar(20),@tsex char(2)='男',@tentrydate datetime,
@tprofessor varchar(10)='讲师',@tsaraly decimal,@depid char(4)
as
begininsert into teacher values(@tno,@tname,@tsex,@tentrydate,@tprofessor,@tsaraly,@depid)print '教师表插入新记录成功!'
end
goexec pds3 '0203','李大白',default,'2003-07-15',default,5000,'01'--(4)创建存储过程pds4,根据输入的课程号将该门课程的学分增加1学分,并将修改后的学分输出,
--使用参数“0001”,执行该存储过程。
create procedure pds4
@cno char(10),
@credit decimal output
as
beginupdate course set course_credit+=1 where course_id=@cnoselect @credit=course_credit from course where course_id=@cnoselect '修改后的学分'=@credit
end
godeclare @credit decimal
exec pds4 '0001',@credit--5、使用管理平台执行存储过程pds4.--找到数据库->'可编程性'->'存储过程'->'dbo.pds4'
--右击选择'执行存储过程',输入参数执行即可。--6、分别使用管理平台和SQL 命令删除存储过程p1和p2。
--①管理平台--找到数据库->'可编程性'->'存储过程'->'dbo.p1'--右击选择'删除'即可。
--②使用SQL 命令
drop procedure p1
drop procedure p2--要求:提交创建存储过程的SQL脚本,并标注必要的注释。
--保证程序能够正确编译和运行,并有相应的测试代码。

2018年11月23日存储过程实验相关推荐

  1. 2018年11月30日存储过程实验(二)

    一.实验目的 熟练掌握存储过程的定义和使用,理解存储过程在数据库的使用中能发挥出什么样的作用. 二.实验环境 硬件环境:PC 软件环境:Windows 10 .SQL Server 2008 --1. ...

  2. 宠物刷新服务器维护,2018年11月21日维护公告:宠物专属内丹更新

    亲爱的玩家朋友: 为保证服务器的运行稳定和服务质量,<梦幻西游>手游所有服务器将于2018年11月21日8:00停机,进行维护工作.预计维护时间为8:00-9:00.如果在预定时间内无法完 ...

  3. 始于2015年11月23日,终于2018年08月08日

    留念. 2015年11月23日:在一起 2016年01月17日-21日:北京机场,我们❤ 2016年04月16日:去他所在城市--成都 2016年06月04-06日:第一次小旅游--都江堰.青城山 2 ...

  4. 西湖大学鞠峰:环境微生物宏基因组学(报告视频+PPT,11月23日)

    报告题目:环境微生物宏基因组学 报告人:鞠峰研究员 报告时间:2020年11月23日 鞠峰,西湖大学研究员,中国工程院院刊<Engineering>编委.Frontiers系列期刊编委与审 ...

  5. python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...

    原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...

  6. 区块链城市 CityDAO-元宇宙的雏形 |号外:11月23日下午数据觉醒元宇宙 圆桌论坛...

    本文转自 澎湃新闻<最激进的CityDAO,为何吸引V神进入社区关注?> https://m.thepaper.cn/baijiahao_15328475 国内的章愳(ZOOJOO)参与了 ...

  7. 【历史上的今天】11 月 23 日:FTP 作者出生;Alicebot 诞生;世界机器人大会

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 11 月 23 日,在 18 年前的今天,著名游戏公司暴雪娱乐所制作的第一款网络游戏<魔兽世界 ...

  8. 2018年11月3日的我——我要成为产品经理

      今天是2018年11月3日,上午10:15,天气小雨转晴,湿冷转闷热,坐标厦门.   大学第四个年头,突发奇想想总结自己的四年.   大一因为常外出到企业进行访谈,想成为人力资源:大二发现自己的编 ...

  9. 神雕侠侣手游服务器维护,《神雕侠侣》2018年11月1日更新维护新服开启公告

    亲爱的玩家: 为了给您提供更好的游戏体验,我们将于2018年11月1日上午8:00-11:00对所有服务器进行停机更新维护,预计维护时间3小时. 若提前完成维护内容,我们将提前开服.对于停机期间给您带 ...

最新文章

  1. spark ml中一个比较通用的transformer
  2. 北京国家新一代人工智能创新发展试验区正式成立
  3. java编写脚本校验修改密码_java编写一个更改密码校验程序,有两个密码框,一个用于输入新密码,另一个请输入确认密码……...
  4. PHP命名空间(Namespace)的使用详解
  5. CNN和RNN中如何引入BatchNorm
  6. 算法学习:最小生成树
  7. MySQL的ALTER命令
  8. 在计算机中表示一个信息容量的基本单位是,微型计算机中,存储器容量的基本单位是()。...
  9. 从零开始学习音视频编程技术(41) H.264播放器
  10. 转移Package Cache文件夹,转移Windows Installer文件夹
  11. 推荐3个开源的快速开发平台,前后端都有,项目经验又有着落了!
  12. 【转】学术论文写作方法
  13. GitHub快速学习-三
  14. 设置下载安装 桌面_滚动图标——手机图标随着手势滚动,让你的桌面动起来...
  15. Python学生信息管理系统图形化界面-老师端-学生端项目实现
  16. 100V输出12V/10A,5V/3.1ADC-DC异步降压芯片
  17. 如何降低程序员的工资?【你中招没】
  18. 在GreenDao开源代码中添加FTS4全文检索功能
  19. USB 高清视频采集芯片HDMI转USB2.0
  20. lis3dh调试心得,读取正确的加速度值

热门文章

  1. Java使用 PDFBox创建 PDF 文件并将文本写入其中
  2. 打印机无法打印的10种解决方法
  3. android ART学习
  4. 【NLP基础理论】01 数据预处理
  5. 没有带手机的一个星期
  6. idea中提示语的显示和隐藏(port:8088)
  7. 在c语言中字符数据可以通用的,在C语言中,字符型数据在计算机内存中,以字符的_______形式存储。...
  8. ce是什么牌子的包_图腾越复古越时髦 DIOR、GUCCI、CE各大精品牌的值得收藏包包...
  9. citespace使用教程系列文章:一、citespace安装和关键词共现图
  10. 美团开放平台SDK自动生成技术与实践