存储过程就是你在工作中经常用的一些语句,你把他存起来,并起名字,要再用的时候直接执行就行了,不用再重复编写
这个就像不重复造轮子一样的道理。把之前写好的拿来用,从而提高效率或做点标志不让自己忘记一样。
存储过程,带有逻辑的sql语句
之前的sql没有条件判断,没有循环
存储过程带上流程控制语句(if while)
存储过程特点
1)执行效率非常快!存储过程是在数据库的服务器端执行的!!!
2)移植性很差!不同数据库的存储过程是不能移植。
存储过程语法
-- 创建存储过程 DELIMITER $ -- 声明存储过程的结束符 CREATE PROCEDURE pro_test() --存储过程名称(参数列表) BEGIN -- 开始 -- 可以写多个sql语句; -- sql语句+流程控制 SELECT * FROM employee; END $ -- 结束 结束符
-- 执行存储过程 CALL pro_test(); -- CALL 存储过程名称(参数);
参数: IN: 表示输入参数,可以携带数据带存储过程中 OUT: 表示输出参数,可以从存储过程中返回结果 INOUT: 表示输入输出参数,既可以输入功能,也可以输出功能 |
编写存储过程 proc_comp , 比较数据库和操作系统两门课程的平均分的高低,并输出: XXX课程的平均分高
数据库内没有这两门课,以计算机文化学课程与高等数学课程代替
-
create proc proc_comp
-
as
-
if(( select AVG(grade) from TSC join Course on TSC.Cno=Course.Cno
-
where Cname= '计算机文化学'
-
group by TSC.Cno)>( select AVG(grade) from TSC join Course on TSC.Cno=Course.Cno
-
where Cname= '高等数学'
-
group by TSC.Cno))
-
print '计算机文化学课程的平均分高'
-
else
-
print '高等数学课程的平均分高'
创建存储过程 proc_student_info,用于检索你本人的学生数据
-
create proc proc_student_info
-
as
-
select *
-
from Student
-
where Sno='1508100201'