2018年11月23日存储过程实验
一、实验目的
熟练掌握存储过程的定义和使用,理解存储过程在数据库的使用中能发挥出什么样的作用。
二、实验环境
硬件环境: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日存储过程实验相关推荐
- 2018年11月30日存储过程实验(二)
一.实验目的 熟练掌握存储过程的定义和使用,理解存储过程在数据库的使用中能发挥出什么样的作用. 二.实验环境 硬件环境:PC 软件环境:Windows 10 .SQL Server 2008 --1. ...
- 宠物刷新服务器维护,2018年11月21日维护公告:宠物专属内丹更新
亲爱的玩家朋友: 为保证服务器的运行稳定和服务质量,<梦幻西游>手游所有服务器将于2018年11月21日8:00停机,进行维护工作.预计维护时间为8:00-9:00.如果在预定时间内无法完 ...
- 始于2015年11月23日,终于2018年08月08日
留念. 2015年11月23日:在一起 2016年01月17日-21日:北京机场,我们❤ 2016年04月16日:去他所在城市--成都 2016年06月04-06日:第一次小旅游--都江堰.青城山 2 ...
- 西湖大学鞠峰:环境微生物宏基因组学(报告视频+PPT,11月23日)
报告题目:环境微生物宏基因组学 报告人:鞠峰研究员 报告时间:2020年11月23日 鞠峰,西湖大学研究员,中国工程院院刊<Engineering>编委.Frontiers系列期刊编委与审 ...
- python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...
原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...
- 区块链城市 CityDAO-元宇宙的雏形 |号外:11月23日下午数据觉醒元宇宙 圆桌论坛...
本文转自 澎湃新闻<最激进的CityDAO,为何吸引V神进入社区关注?> https://m.thepaper.cn/baijiahao_15328475 国内的章愳(ZOOJOO)参与了 ...
- 【历史上的今天】11 月 23 日:FTP 作者出生;Alicebot 诞生;世界机器人大会
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 11 月 23 日,在 18 年前的今天,著名游戏公司暴雪娱乐所制作的第一款网络游戏<魔兽世界 ...
- 2018年11月3日的我——我要成为产品经理
今天是2018年11月3日,上午10:15,天气小雨转晴,湿冷转闷热,坐标厦门. 大学第四个年头,突发奇想想总结自己的四年. 大一因为常外出到企业进行访谈,想成为人力资源:大二发现自己的编 ...
- 神雕侠侣手游服务器维护,《神雕侠侣》2018年11月1日更新维护新服开启公告
亲爱的玩家: 为了给您提供更好的游戏体验,我们将于2018年11月1日上午8:00-11:00对所有服务器进行停机更新维护,预计维护时间3小时. 若提前完成维护内容,我们将提前开服.对于停机期间给您带 ...
最新文章
- spark ml中一个比较通用的transformer
- 北京国家新一代人工智能创新发展试验区正式成立
- java编写脚本校验修改密码_java编写一个更改密码校验程序,有两个密码框,一个用于输入新密码,另一个请输入确认密码……...
- PHP命名空间(Namespace)的使用详解
- CNN和RNN中如何引入BatchNorm
- 算法学习:最小生成树
- MySQL的ALTER命令
- 在计算机中表示一个信息容量的基本单位是,微型计算机中,存储器容量的基本单位是()。...
- 从零开始学习音视频编程技术(41) H.264播放器
- 转移Package Cache文件夹,转移Windows Installer文件夹
- 推荐3个开源的快速开发平台,前后端都有,项目经验又有着落了!
- 【转】学术论文写作方法
- GitHub快速学习-三
- 设置下载安装 桌面_滚动图标——手机图标随着手势滚动,让你的桌面动起来...
- Python学生信息管理系统图形化界面-老师端-学生端项目实现
- 100V输出12V/10A,5V/3.1ADC-DC异步降压芯片
- 如何降低程序员的工资?【你中招没】
- 在GreenDao开源代码中添加FTS4全文检索功能
- USB 高清视频采集芯片HDMI转USB2.0
- lis3dh调试心得,读取正确的加速度值
热门文章
- Java使用 PDFBox创建 PDF 文件并将文本写入其中
- 打印机无法打印的10种解决方法
- android ART学习
- 【NLP基础理论】01 数据预处理
- 没有带手机的一个星期
- idea中提示语的显示和隐藏(port:8088)
- 在c语言中字符数据可以通用的,在C语言中,字符型数据在计算机内存中,以字符的_______形式存储。...
- ce是什么牌子的包_图腾越复古越时髦 DIOR、GUCCI、CE各大精品牌的值得收藏包包...
- citespace使用教程系列文章:一、citespace安装和关键词共现图
- 美团开放平台SDK自动生成技术与实践