day14:存储过程

存储过程

存储过程:类似于Java中的方法

好处:1、提高代码的重用性   2、简化操作  3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

含义:一组预先编译好的SQL语句的集合,可以理解成批处理语句

一、创建语法

create  procedure  存储过程名(参数列表)  

begin

  存储过程体(一组合法的SQL语句)

end;

注意:

1、参数列表包含三部分:参数模式    参数名   参数类型

例如:  IN  stuname  varchar(20)

参数模式:

IN  :该参数可以作为输入,也就是该参数需要调用方传入值

OUT  :该参数可以作为输出,也就是该参数可以作为返回值

INOUT :该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

2、如果存储过程体仅仅只有一句话,begin   end可以省略,存储过程体中的每条SQL语句的结尾要求必须加分号。

存储过程的结尾可以使用delimiter 重新设置

 语法:delimiter  结束标记            例如:delimiter  $

 

二、调用语法

call  存储过程名(实参列表);

新建admin表

create table admin(
    id int primary key auto_increment,
    aname varchar(55),
    pwd varchar(55)
);

insert into admin(aname,pwd) values('张三','123456');

  

1、空参列表

例如:向admin表中插入5条记录

a、新建存储过程myp1

create procedure myp1()
BEGIN
    insert into admin(aname,pwd) values('李四','123456'),
    ('王五','123456'),('赵六','123456'),('张龙','123456'),
    ('赵虎','123456');
END;

如果出现不支持存储过程体和存储过程结束同时有分号,则创建如下:

delimiter $
create procedure myp1()
BEGIN
    insert into admin(aname,pwd) values('李四','123456'),
    ('王五','123456'),('赵六','123456'),('张龙','123456'),
    ('赵虎','123456');
END $

b、调用存储过程myp1

call myp1();

2、创建带in模式参数的存储过程

例如:创建存储过程实现,根据部门名,查询对应的所有员工的信息

create procedure myp2(in depName varchar(55))
BEGIN
    select * from employee e where e.departmentid=
    (select id from department where dname=depName);
end;

调用

call myp2('技术部');

3、创建带out模式的存储过程

例如:创建存储过程体,根据员工名,查询对应的部门名称

create procedure myp3(in ename varchar(55),out dname varchar(55))
BEGIN
    select d.dname into dname
    from department d where d.id=
    (select departmentid from employee e where e.ename=ename);
end;

调用

call myp3('张三',@dname);
select @dname;

4、创建带inout模式参数的存储过程

例如:传入a和b两个值,最终a和b都翻倍并返回

create procedure myp4(inout a int,inout b int)
BEGIN
    set a=a*2;
    set b=b*2;
end;

调用

set @a=5;
set @b=8;
CALL myp4(@a,@b);
select @a,@b;

三、删除存储过程

语法:drop  procedure  存储过程名

例如:删除存储过程myp1;

drop procedure myp1;

四、查看存储过程的信息

例如:查看存储过程myp2的信息

show create procedure myp2;
原文地址:https://www.cnblogs.com/wuguiyu/p/11771719.html