MySQL的存储过程

创建存储过程

    作用:有点类似于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;

你可能感兴趣的:(MySQL数据库)