MySQL存储过程

1、什么是存储过程:

    a.存储过程,是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个处理单元

    b.存储过程存储在数据库内,可以由运用程序调用执行,允许用户声明变量以及流程控制,存储过程可以接受参数,可以接受输入类型参数,

                 也可以接收输出参数,并且可以存在多个返回值

2、为什么要使用存储过程:

    a. 存储过程就是有业务逻辑和流程的集合, 可以在存储过程中创建表,更新数据, 删除等等。

    b.通过把处理封装在单元中,简化复杂的操作由于不要求反复建立一系列处理步骤,这保证了数据的完整性。

      c.相当于java的封装,把必要的程序封装起来,必要时只需要掉用封装后的程序,保证在向数据库插入数据时的安全性和一致性,

                要更改插入的位置属性(比如字段)时只需要,在存储过程里面进行更改。

3、如何创建存储过程:

3.1创建语法:

create procedure 存储过程名(参数类型 参数名 数据类型,...,参数类型 参数名 数据类型)
begin
        一组合法的SQL语句组合;
        select...;
        update...;
        insert...;
        delete...;
end
create procedure sp_name
@[参数名] [参数类型] [数据类型],@[参数名] [参数类型] [数据类型]
begin
     组合法的SQL语句组合;
       select...;
       update...;
       insert...;
       delete...;
end 

注:如果存储过程体只有一条语句,则begin....end可以省略

  delimiter:表示存储过程的结束标志

3.2、参数类型:

 in     表示该参数作为输入,也就是该参数必须在调用存储过程时指定值
 out 表示该参数作为输出,也就是该参数作为存储过程的返回值
inout 表示该参数既可以作为输入值也可以作为输出值,也就是该参数既要传入值又要返回值

3.3存储过程的调用:

 call 存储过程名(实参类型);

  

set @形参名称1 = 1250 ; --给形参传入确切值1250
...
set @形参名称n = 1260 ;
call 存储过程名(形参名称1,...,形参名称n);
select   查询的结果1,..,查询的结果n; --查询的结果一般是我们定义成out,inout的参数类型变量

4、存储过程案例  

4.1 emp表中数据

4.2案例1:

  定义一个没有形参的存储过程,并向emp表中插入数据

delimiter $ --定义结束标识符$
CREATE PROCEDURE INSERT1()
BEGIN
	insert INTO emp(empno,ENAME) VALUES (4397,'marry');
END $

CALL INSERT4() $

 

4.2案例1:

原文地址:https://www.cnblogs.com/ibear/p/12705956.html