创建存储过程
作用:有点类似于Java中的函数,它是直接存储在MySQL数据库中,只编译一次,多次运行只需调用即可。
它有名字,输入变量in,返回值out。
而且返回值的数目多于一个,这是与自定义函数的最大区别。
创建
create [definer={user|current_user}]
procedure sp_name ([proc_parameter[,…]])
[characteristic..] routine_body
proc_parameter:
[in|out|inout] prarm_name type
调用
call sp_name([parameter[,…])
1、无参
create procedure sp2() select version();
2、in类型的有参函数
create procedure sp_3(in p_id int unsigned)
begin
delete from shi where id = p_id;
end;
$
3、in 和 out 类型的有参函数
create procedure sp3(in p_id int unsigned, out p_num int unsigned)
begin
delete from shi where id = p_id;
select count(id) from shi into p_num;
end;
$
调用:call sp3(1,@p_num);$ // @p_num 为当前用户变量,只存储在客户端
拿到值:select @p_num;
4、in 和多个 out类型的参数
删除sexs,得到删除行数,和剩下的总数。
create procedure sp4(in p_sexs int unsigned, out p_name varchar(20),out p_id varchar(20) )
begin
delete from shi where sexs = p_sexs;
select row_count() into p_name;
select count(id) from shi into p_id;
end;
$
调用: call sp4(5,@n1,@n2);
select @n1,@n2;