MySQL存储过程
什么是存储过程
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。简单理解,存储过程其实就是一堆SQL语句的合并。中间加入了一些逻辑控制。
存储过程的创建方式
存储过程的创建方式:
- 创建无参存储过程
- 创建有参存储过程
1.创建无参存储过程
1.语法格式:
delimiter $$ --声明一个存储过程的定义开始
create procedure 存储过程名称() --声明存储过程的名称
begin --表示存储过程内部的SQL语句的开始
#表示将要执行的SQL语句
end $$ -- 表示声明这个存储过程的定义结束;end: 表示存储过程内部SQL语句的声明结束
2.调用存储过程:调用过程类似Java中方法的调用。
call 存储过程名();
2.有参存储过程
在调用存储过程的时候,需要调用某些参数,给存储过程;
1.语法格式
delimiter $$ --声明一个存储过程的定义开始
create procedure 存储过程名称(IN 参数名称 参数数据类型) --声明存储过程的名称
begin --表示存储过程内部的SQL语句的开始
#SQL语句操作
end $$
IN关键字:用来指定当前存储过程可以接受的参数列表
参数名称 参数数据类型:在接收参数的时候,存储过程需要指定参数名称和当前参数的类型.
2.有参存储过程调用
call 存储过程名(参数值); #括号!一定!不能省略!
3.案例演示
无参:
1:数据准备,创建商品表与订单表,并向商品表中添加数据。
#商品表
CREATE TABLE goods(
gid INT,
name VARCHAR(20),
num INT --库存
);
#订单表
CREATE TABLE orders(
oid INT,
gid INT,
price INT --订单价格
);
INSERT INTO goods VALUES(1,'玫瑰花',99);
INSERT INTO goods VALUES(2,'向日葵',19);
INSERT INTO goods VALUES(3,'彼岸花',9);
2.需求:编写存储过程,查询所有商品数据
DELIMITER $$
CREATE PROCEDURE goods_proc()
BEGIN
SELECT * FROM goods;
END $$
3.调用存储过程
call goods_proc(); #括号可以省略
有参:
1.需求,根据id删除对应的商品数据
DELIMITER $$
CREATE PROCEDURE goods_delById_proc(IN goods_id INT)
BEGIN
DELETE FROM goods WHERE gid = goods_id;
END $$
2.调用存储过程
call goods_delById_proc(1); #删除商品id为1的商品数据