存储过程

一段在服务器上执行的程序

把过程定义成程序保存到服务器中 以便经常使用

分为系统存储过程和用户自定义存储过程

系统存储过程

sp_ 开头

自定义存储过程

无参数的存储过程

主要用于完成一类操作,它不需要输入参数。

执行时只有一种结果。

CREATE PROCEDURE 存储过程1
AS
SELECT 课程名称 FROM 课程
inner join 选课成绩 ON 选课成绩.课程编号=课程.课程编号
inner join 学生 ON 选课成绩.学号=学生.学号
WHERE 姓名='张天'

exec 存储过程1

有输入参数无输出参数的存储过程

在执行时需要提供和存储过程定义时类型/顺序和个数相同的实际参数

根据提供的参数值不同,运行结果不同。

CREATE PROCEDURE 存储过程2 @name char(20)

AS

SELECT 课程名称 FROM 课程

inner join 选课成绩 ON 选课成绩.课程编号=课程.课程编号

inner join 学生 ON 选课成绩.学号=学生.学号

WHERE 学生.姓名=@name

exec 存储过程2 '张三'

有输入参数和输出参数的存储过程

CREATE PROCEDURE 存储过程3 @name char(20),@num int OUTPUT

AS

set @num=(SELECT count(*) FROM 选课成绩

WHERE 学号=(SELECT 学号 FROM 学生 WHERE 姓名=@name))

declare @num int

exec 存储过程3 '胡丽丽',@num output

select @num as 吴美兰选修课程数

无输入参数有输出参数的存储过程

用法:

指定列更新数据

create procedure 存储过程5 @name char(10),@xingbie char(2)
as
update 学生
set 性别=@xingbie
where 姓名=(select 姓名 from 学生 where 姓名=@name)

EXEC 存储过程5 '李四','女'

删除存储过程

DROP PROCEDURE 存储过程1,存储过程2,存储过程3

DROP proc 存储过程4

可略写成proc


⬅️ 17-T-SQL程序设计 🏠 00-数据库 ➡️ 19-事务与并发