前言
数据库本身支持存储过程,不同的数据库管理系统对存储过程的支持都不尽相同
从mysql5.0开始,mysql支持存储过程/存储函数/触发器/事件
使用存储过程的优点
存储过程执行一次后,其执行的规划就驻留在高速缓冲存储器上,以后再次调用存储过程时,只需从高速缓冲存储器中调用以编译好的二进制代码执行,提高系统性能
(也就是说,sql本质上是编译型语言,存储过程这个程序用sql语句写好之后,将sql语句进行编译,编译得到二进制代码可以直接运行在机器上,无需再次编译,一次编译就可以在机器上无数次运行,这就是存储过程的优点)
对存储过程的理解?
sql语句能在计算机上运行,本质上也是转换成机器码了,sql是一门编译型语言
存储过程就像是一个函数,有输入参数,有返回值
如何使用存储过程?
delimiter //
show procedure status
create procedure xxx(in 参数名 参数类型)
begin
sql....................
end
//
调用存储过程
call xx(参数)
删除存储过程
drop procedure xxx
sql....................存储过程体
声明局部变量declare xx 类型;
使用set为局部变量赋值set xx=值;
流程控制语句if ...then ....elseif... then ...else
存储函数
存储函数包含returns语句,存储过程没有returns语句
创建存储函数
create function xx(参数)
return type
delimiter //
create function xxx()
returns integer
begin
returns (select count(*) from xx);
end
//
存储函数创建之后就如同系统提供的内置函数一样调用即可
select xxx();
drop function xxx;
;