什么是存储过程
在别的语言中,如pascal,有个概念叫过程,就是“procedure”,和函数function,在php中没有过程只有函数.
过程:封装了若干条语句,调用时直接执行封装体。
函数:一个有返回值的过程。
过程:没有返回值的函数,
存储过程:就是把多条sql封装,并且起个名字,把此过程存至数据库
储存过程是一个可编程的函数,它在数据库中创建并保存。
当要执行这一段代码的时候,可以通过调用该存储过程来实现.
在封装的语句体里面,可以用if/else, case,while等控制结构.
可以进行sql编程.
语法
一、创建语法
1、最简单的用法
create procedure procedurename()
begin
--sql语句
ends$
例如:
mysql> DELIMITER //
mysql>
CREATE PROCEDURE proc1(OUT s int)
BEGIN
SELECT COUNT(*) INTO s FROM user;
END
//
mysql> DELIMITER ;
在这里注意写delimiter(即改变输入结束符。),如果不写,系统认为你仅仅执行一条sql,因为mysql一遇到分号,它就要自动执行。delimiter作用就是对整个小段语句做一个简单的封装
2.引入一个变量:
存储过程是可以编程的,可以进入变量,表达式,控制结构,完成复杂功能。
在存储过程中,用declare声明,
引入变量:
create procedure p2()
begin
declare age int default 18;
declare height int default 180;
select concat('年龄是',age,'身高是','');
end$
运算:
create procedure p2()
begin
declare age int default 18;
declare height int default 180;
set age:=age+20
select concat('20年后的年龄是',age,'身高是','');
end$
引入控制结构:
给存储过程传参
存储过程的括号里,可以声明参数,
语法是[in/out/inout] 参数名 参数类型
二、查看存储过程
show procedure status
三、调用存储过程
call 存储过程的名字
四、删除存储过程
Drop procedure 存储过程的名字