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
清清软件园 http://sillysoft.taobao.com