mysql存储过程和函数

MySQL存储过程的查询命令介绍

如下所示:

  • ?
  • 1
  • select name from mysql.proc where db='数据库名';
  • 或者

  • ?
  • 1
  • select routine_name from information_schema.routines where routine_schema='数据库名';
  • 或者

  • ?
  • 1
  • 2
  • show procedure status where db='数据库名';
  • SHOW CREATE PROCEDURE 数据库.存储过程名;
  • 补充:MySQL存储过程-循环遍历查询到的结果集

    1、创建存储过程

     

    根据MySQL的语法创建存储过程,要注意的是如果循环遍历查询到的结果集,取出结果集中的数据做操作。

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • CREATE DEFINER=`root`@`%` PROCEDURE `alter_view_counts`()
  • BEGIN
  •  #声明结束标识
  •  DECLARE end_flag int DEFAULT 0;
  •  DECLARE albumId bigint;
  •  #声明游标 album_curosr
  •  DECLARE album_curosr CURSOR FOR SELECT album_id FROM album;
  •  #设置终止标志
  •  DECLARE CONTINUE HANDLER FOR NOT FOUND SET end_flag=1;
  •  #打开游标
  •  OPEN album_curosr;
  •  #遍历游标
  •  REPEAT
  •  #获取当前游标指针记录,取出值赋给自定义的变量
  •  FETCH album_curosr INTO albumId;
  •   #利用取到的值进行数据库的操作
  •   UPDATE album SET album.views_count= (SELECT SUM(light_chat.views_count) FROM `light_chat` WHERE light_chat.album_id = albumId) WHERE album.album_id = albumId;
  •  # 根据 end_flag 判断是否结束
  •  UNTIL end_flag END REPEAT;
  •  #关闭游标
  •  close album_curosr;
  • END
  • 2,调用存储过程

     

  • ?
  • 1
  • CALL alter_view_counts()
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持开心学习网。如有错误或未考虑完全的地方,望不吝赐教。

    原文链接:https://blog.csdn.net/wrh_csdn/article/details/79472910