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的商品数据
posted @ 2023-07-26 19:36  超|钱  阅读(70)  评论(0编辑  收藏  举报