MySQL之存储过程

存储过程就是一组预编译好的sql语句,通过案例来学习如何创建,调用,删除,查看存储过程。

CREATE TABLE `stusent` (
  `id` int(11) NOT NULL,
  `name` varchar(30) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

1.创建无参的存储过程

DELIMITER $
DROP PROCEDURE IF EXISTS procedure1;
CREATE PROCEDURE procedure1()
  BEGIN
    INSERT INTO stusent VALUES (1,'张三',20);
    INSERT INTO stusent VALUES (2,'李四',10);
  END $
DELIMITER ;

2.调用存储过程

call procedure1();

3.查看结果

4.查看存储过程

show create procedure procedure1

 

5.删除存储过程

DROP PROCEDURE IF EXISTS procedure1;

 6.再查看存储过程

show create procedure procedure1

7.创建入参存储过程

DELIMITER $
DROP PROCEDURE IF EXISTS procedure2;
CREATE PROCEDURE procedure2(in id int,in name varchar(30),in age int)
  BEGIN
    INSERT INTO stusent VALUES (id,name,age);
  END $
DELIMITER ;

8.调用存储‘

CALL procedure2(3,'wangwu',18);

9.查询

10.创建,调用,查看出参的存储过程

 

DROP PROCEDURE IF EXISTS procedure3;
DELIMITER $
CREATE PROCEDURE procedure3(out count_id int,out max_id INT)
  BEGIN
      INSERT INTO stusent VALUES (4,'zhaoliu',20);
      SELECT COUNT(*),max(id) into count_id,max_id from stusent;
  END $
DELIMITER ;

CALL procedure3(@count_id,@max_id);

select @count_id,@max_id

11.创建入参出参存储过程

DROP PROCEDURE IF EXISTS procedure4;
DELIMITER $
CREATE PROCEDURE procedure4(INOUT a int,INOUT b int)
  BEGIN
   set a =a+1;
     select b*4 into b;
  END $
DELIMITER ;

-- 创建了2个自定义变量
set @a=1,@b:=2;

CALL procedure4(@a,@b);

select @a,@b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值