一 为什么要使用存储过程
将重复性很高的一些操作,封装到一个存储过程中,简化了对这些SQL的调用
批量处理:SQL+循环,减少流量,也就是“跑批”
统一接口,确保数据的安全
二 存储过程的建立实例
mysql> delimiter $$ #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER)
-> BEGIN
-> DELETE FROM MATCHES -
> WHERE playerno = p_playerno;
-> END$$
mysql> delimiter; #将语句的结束符号恢复为分号
三存储过程参数详解
delete_mathches 要调用的存储过程的名称
in 参数类型
IN输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
OUT输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
INOUT输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)
p_playerno :要传入的参数值
INTEGER :要传入参数值的类型
begin 存储过程语言 end 一个完整的存储过程建立
斯 存储过程的调用
call delete_matches(57);
四 navicat 可视化数据库软件中建立存储过程
打开数据库-》函数-》过程-》根据向导创建一个函数-》输入函数名称
出现的问题:当我调用存储过程时会报错
修改.切记存储过程的参数一定要设定长度。通过向导添加参数的时候是没有设定长度的,所以会报错。一定要手动添加长度
五:查询数据库下的存储过程
selectname from mysql.proc where db='数据库名';
或者
selectroutine_name from information_schema.routines where routine_schema='数据库名';
或者
showprocedure status where db='数据库名';
六 查看存储过程的详情
SHOWCREATE PROCEDURE 数据库.存储过程名;
七 存储过程的删除
drop procedure delete_name(存储过程)