SQL 存储过程(学生,课程表,选修表)

SQL 存储过程(学生,课程表,选修表)

一.存储过程的分类 在SQL Server中存储过程分过两类:

1)系统存储过程("sp_"作为前缀)

2)用户自定义存储过程

二.创建和执行存储过程

1)创建在存储过程的方法一般有两种:

1.使用SQL Server Management Studio

2.使用T—SQL语句(重点)

2)T—SQL中常用的控制流关键字

begin...end(定义语句块);break(退出最内层的while循环);continue(重新开始while循环); goto label;if...else;return;waitfor(为语句的

执行设置延迟);while(当特定条件为true时重复语句)

3)实例:使用T-SQL语句创建和执行存储过程的方法

复制代码

--3.1 创建名为"Stuproc1"的存储过程,用来查询班级为"计算机应用"的学生的学号,姓名和性别
create proc Stuproc1
as
select 学号,姓名,性别
from 学生
where 学生.班级='计算机应用'

exec Stuproc1
--备注:as 用于指定该存储过程要执行的操作

--3.2 创建存储过程"Stuproc2",根据用户输入的班级名,查询该班学生的学号,姓名和性别.若不输入班级名,则显示"计算机应用"班的学生
create proc Stuproc2
@班级 char(20)='计算机应用'
as
select 学生.学号,学生.姓名,学生.性别
from 学生
where 学生.班级=@班级

exec Stuproc2 @班级='计算机网络'

--3.3 创建存储过程Stuproc3,根据用户输入的学号和课程名,返回该课程的成绩
create proc Stuproc3
(@学号 char(9),@课程名 char(20))
as
select 选修.成绩
from 课程 inner join 选修 on 选修.课程号=课程.课程号
where  选修.学号=@学号 and 课程.课程名=@课程名

exec Stuproc3 @学号='1002',@课程名='计算机软件'

--3.4 创建存储过程Stuproc4,根据用户输入的课程名,返回选修该课程的学生人数
create proc Stuproc4
@课程名 char(20)
as 
select 课程名,COUNT(*) as 学生人数
from 课程 inner join 选修 on 课程.课程号=选修.课程号
group by 课程名

exec Stuproc4 @课程名='计算机应用'

drop proc Stuproc4

--3.5 创建存储过程Stuproc5,用于查询不及格课程数在4门以上(不包含4门)的学生的全部信息.将这些学生信息存入退学表
create table 退学(
学号 char(9) primary key,
姓名 nvarchar(5),
班级 char(20),
性别 nchar(1),
出生年月日 smalldatetime,
电话 char(11),
Email varchar(30),
备注 varchar(100)
)
create proc Stuproc5
as
insert into 退学
select*
from 学生
where  学号 in(select 学号
from 选修
where 成绩<60
group by 学号
having COUNT (*) >4
)
drop proc Stuproc5

exec Stuproc5 
select * from 退学



--3.6 某些同学因为个人志向,入学后向学校提出转班级申请.创建存储过程Stuproc6,根据输入的学生学号,修改该同学的班级名称
create proc Stuproc6
(@学号 char(10),@班级 char(20))
as
update 学生
set 班级=@班级
where 学号=@学号

exec Stuproc6 @学号='1001',@班级='计算机导论'
select *
from 学生

复制代码

三.查看存储过程

--用于显示存储过程的所有者,创建时间,存储过程的参数及其数据类型
sp_help
--用于显示存储过程的源代码
sp_helptext [存储过程名称]
例:
sp_helptext Stuproc5
--用于显示和存储过程相关的数据库对象
sp_depends
--用于返回当前数据库中的存储过程列表
sp_stored_procedures
例:
exec Stuproc5

四.修改存储过程

复制代码

--把存储过程Stuproc1修改为能查询"计算机应用班"学生的全部信息
alter proc Stuproc1
as
select *
from 学生
where 班级='计算机应用'

sp_helptext Stuproc1

exec Stuproc1

复制代码

五.重命名存储过程

复制代码

--把存储过程"Stuproc1"重命名为"计算机网络学生"
sp_rename Stuproc1,计算机网络学生
sp_help

复制代码

六.册除存储过程

复制代码

--要删除存储过程"Stuproc2"
drop proc Stuproc2

复制代码

转载于:https://www.cnblogs.com/sczw-maqing/p/3259129.html

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值