存储过程
一段在服务器上执行的程序
把过程定义成程序保存到服务器中 以便经常使用
分为系统存储过程和用户自定义存储过程
系统存储过程
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-事务与并发
💬 评论