一、什么是存储过程:数据库中保存的一系列 sql 命令的集合;编写存储过程时,可以使用变量、条件判断、流程控制等;存储过程,就是 MySQL 中的脚本
二、存储过程优点: 提高性能、可减轻网络负担、可以防止对表的直接访问、避免重复的 sql 操作
三、基本使用:创建 查看 调用 删除
1、创建存储过程
delimiter // 修改命令结束符为//
create procedure 名称 ()
begin
功能代码
…..
…..
end //结束存储过程的功能代码
// 结束存储过程
delimiter ; 修改回命令结束符为;
2、查看存储过程
方法 1 : mysql> show procedure status;
方法 2 :mysql> select db,name,type from mysql.proc where name=“ 存储过程名 ";
mysql> select db,name,type from mysql.proc where name="say";
mysql.proc :记录存储过程文件 db 库名 name名称 type 类型(FUNCTION 函数 ,PROCEDURE 存储过程) body具体代码
3、调用存储过程
call 存储过程名 (); //存储过程没有参数时, () 可以省略有参数时,在调用存储过程时,必须传参。
mysql> call say();
4、删除存储过程
drop procedure 存储过程名;
mysql> drop procedure say;
5、存储过程参数类型: in out inout
Create procedure 名称 (类型 参数名 数据类型 ,类型 参数名 数据类型) 默认类型是 in
A、in 输入参数 作用是给存储过程传值,必须在调用存储过程时赋值,在存储过程中该参数的值一般不修改,如果变化,值只在存储过程中有效;
delimiter //
create procedure p1(in nu char(20))
begin
select name,shell from db9.user where name=nu;
end
//
delimiter ;
B、out 输出参数,不能用于传入参数值,该值可在存储过程内部被改变\返回;调用存储过程时,OUT参数也需要知道,但必须是变量,不能是常量。
delimiter //
create procedure p3( out num int(2) )
begin
select num; //为空
set num=7;
select num; //为7
select count(name) into num from db9.user where shell="/bin/bash";
select num; //为2
end
//
delimiter ;
call p3(@num) //该值会重新赋予到外面的用户变量里,即select @num;会为2,不会为前面赋予的值
C、inout 输入/输出参数 调用时可传入值,在调用过程中,可修改其值,同时也可返回值,INOUT调用时传入的是变量,而不是常量
注意:此三中类型的变量在存储过程中调用时不需要加 @ 符号 !!!
未经允许不得转载:天府数据港官方信息博客 » Mysql之存储过程
客官点个赞呗! (0)