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: