加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL数据库之存储过程?procedure

发布时间:2022-09-13 16:16:26 所属栏目:MySql教程 来源:
导读:  前言:

  stored procedure 完成特定功能的SQL语句集mysql数据库存储过程教程,存储在数据库中,经过第一次编译之后再次调用不需要编译(效率较高)

  1、存储过程与函数的区别1.1、相同点1.2、不同
  前言:
 
  stored procedure 完成特定功能的SQL语句集mysql数据库存储过程教程,存储在数据库中,经过第一次编译之后再次调用不需要编译(效率较高)
 
  1、存储过程与函数的区别1.1、相同点1.2、不同点2、存储过程的操作2.1、创建过程
 
  基本语法:
 
  create procedure 过程名字([参数列表])
 
  bengin
 
  过程体
 
  end
 
  结束符
 
  如果只有只有一条指令可以省略begin和end
 
  create procedure my_pro1()
  select * from my_student;
  过程基本上可以完成函数对应的所有功能:
 
  -- 修改语句结束符
  delimiter $$
  -- 创建过程
  create procedure my_pro2()
  begin
      -- 求1到100之间的和
      -- 创建局部变量
      declare i int default 1;
      -- declare sum int default 0;
      -- 会话变量
      set @sum = 0;
      -- 开始循环获取结果
      while i <= 100 do
          -- 求和
          set @sum = @sum + i;
          set i = i + 1;
      end while;
      -- 显示结果
      select @sum;
  end
  $$
  delimiter ;
  2.2、查看过程
 
  -- 查看所有存储过程
  show procedure status [like 'pattern'];
  -- 查看过程的创建语句
  show create procedure 过程名字\G
  2.3、调用过程
 
  过程没有返回值
 
  基本语法:
 
  call 过程名([实参列表]);
  -- eg:
  call my_pro2();
  +------+
  | @sum |
  +------+
  | 5050 |
  +------+
  2.4、删除过程
 
  基本语法:
 
  drop procedure 过程名;
  3、存储过程的形参类型
 
  存储过程的参数和函数一样,需要制定其类型
 
  但是存储过程对参数还有额外的要求mysql数据库存储过程教程,自己的参数分类:
 
  代码示例:
 
  -- 创建3个会话变量
  set @var1 = 1;
  set @var2 = 2;
  set @var3 = 3;
  -- 查询会话变量
  select @var1, @var2, @var3;
  +-------+-------+-------+
  | @var1 | @var2 | @var3 |
  +-------+-------+-------+
  |     1 |     2 |     3 |
  +-------+-------+-------+
  1 row in set (0.00 sec)
  -- 修改语句结束符
  delimiter $$
  -- 定义过程
  create procedure my_pro3(in a int, out b int, inout c int)
  begin
      -- 查看传入的3个数据值
      select a, b, c;
      -- +------+------+------+
      -- | a    | b    | c    |
      -- +------+------+------+
      -- |    1 | NULL |    3 |
      -- +------+------+------+
      -- 修改3个变量值
      set a = 10;
      set b = 20;
      set c = 30;
      select a, b, c;
      -- +------+------+------+
      -- | a    | b    | c    |
      -- +------+------+------+
      -- |   10 |   20 |   30 |
      -- +------+------+------+
      -- 查看会话变量
      select @var1, @var2, @var3;
      -- +-------+-------+-------+
      -- | @var1 | @var2 | @var3 |
      -- +-------+-------+-------+
      -- |     1 |     2 |     3 |
      -- +-------+-------+-------+
      -- 修改会话变量
      set @var1 = 'a';
      set @var2 = 'b';
      set @var3 = 'c';
      select @var1, @var2, @var3;
      -- +-------+-------+-------+
      -- | @var1 | @var2 | @var3 |
      -- +-------+-------+-------+
      -- | a     | b     | c     |
      -- +-------+-------+-------+
  end
  $$
  delimiter ;
  -- 调用过程
  call my_pro3(@var1, @var2, @var3);
  -- 再次查看会话变量
  mysql> select @var1, @var2, @var3;
  +-------+-------+-------+
  | @var1 | @var2 | @var3 |
  +-------+-------+-------+
  | a     |    20 |    30 |
  +-------+-------+-------+
 
 

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!