zoukankan      html  css  js  c++  java
  • mysql 存储过程和事件调度

    存储过程(procedure):

    建立一个存储过程需要知道的基础知识

    1.确定输入/输出的参数和类型:

    IN tname varchar(20) 其中 IN 表示输入参数,tname  是参数名 varchar(20) 是参数类型

    RETURNS int(10)  其中 RETURNS 表示输出 返回  ,int(10) 表示 返回类型

    2.定义变量和赋值。

    declare 定义变量  例如   declare a float;

    set 赋值    例如  set a=0;  或者 set a = rand();

    如果set 的变量前面有@符号表示这个变量是一个会话变量。否则是一个局部变量。

    3.过程的出体部分。可以是各种运算,也可以是数据库操作。支持 if ...else 、循环等基本语法。 

    4.程序可以有返回值 也可以没有

    5.调用存储过程 使用 call 例如  call pro_name('1','2');

    建立一个存储过程的格式:

    create procedure   存储过程名称  (IN $table_name varchar(20),IN $field varchar(10))

    begin //主体开始

    //主体

    end // 主体结束

    definer

    例如:

    delimiter $$   设置语句结束符为 //
    DROP PROCEDURE IF EXISTS select_number//
    create procedure select_number(in ac int) 
    begin
    declare a text;
    set a=ac;
    select a;
    end$$
    delimiter ;    //将语句结束改回;

    因为在存储过程中使用了 ;号 为了不让mysql 运行 需要修改mysql 语句结束符;

    调用

    call  select_number(11);

    结果为  :

     基于这个建立一个事件:

    create event if not exists test  
    on schedule every 10  second
    on completion preserve
    do call select_number(11);

    每隔10秒执行以下  select_number 这个存储过程   test 是时间的名称;

    定时插入案例

    存储过程为:

     delimiter $$
     create procedure insert_name(in name varchar(20)) 
     begin
     insert into a2 values(name);
     end$$
    delimiter ;

    建立每个10秒插入事件:

    create event if not exists insert_name  
    on schedule every 10  second
    on completion preserve
    do call insert_name('test_name');

    每隔多一点时间  查看一个a2 表 看看是否多了一个  test_name  的值;

    关闭事件:

    alter event insert_name on completion preserve disable;

    删除事件:

    drop event insert_name;

    查看所有事件:

    show events;

    如果event 执行不了,可能是因为event功能没有打开;

    查看event是否打开:

    show variables like '%scheduler%';

    开启:

    set global event_scheduler = 1

     查看有哪些存储过程:

     show procedure status;

    查看存储过程建立代码:

    show create procedure proc_name;
  • 相关阅读:
    Docker 私有仓库搭建
    事务提交与不同数据库的自增方式
    多环境切换&&注解方式&&增删改返回值问题
    查询缓存&&逆向工程
    Mybatis整合Log4j、延迟加载
    关联查询
    MyBatis实现动态SQL
    输出参数resultType
    MyBatis调用存储过程执行CRUD
    两种取值符号的异同
  • 原文地址:https://www.cnblogs.com/phpshen/p/6208245.html
Copyright © 2011-2022 走看看