• MYSQL 存储过程通用


    返回随机时间 函数

    CREATE  FUNCTION `milan_get_rand_time`(type VARCHAR(50)) RETURNS varchar(20) CHARSET utf8
    BEGIN
    DECLARE _day INT DEFAULT (FLOOR(RAND() * 60)); -- 随机天数 60天以内随机天数
    DECLARE _hour INT DEFAULT (FLOOR(RAND() * 24)); -- 随机小时
    DECLARE _minute INT DEFAULT (FLOOR(RAND() * 60));-- 随机分
    DECLARE _second INT DEFAULT (FLOOR(RAND() * 60));-- 随机秒
    DECLARE _myday VARCHAR(20);
    IF type = 'before' THEN
            set _day =_day;
    ELSEIF type='after' THEN
            SET _day =-1*_day;
    ELSE
            SET _day=0;
    END IF;
    
     SET _myday = DATE_FORMAT(DATE_SUB(NOW(),INTERVAL _day DAY) ,'%Y-%m-%d'); -- 获取一个随机的日期
    -- SET _myday = DATE_SUB(CURRENT_DATE(),INTERVAL _day DAY); -- 获取一个随机的日期
    SET _myday = CONCAT(_myday,' ',LPAD(_hour,2,0),':',LPAD(_minute,2,0),':',LPAD(_second,2,0)); -- 在这个日期上加上时分秒
       RETURN _myday;
    END

    带参数的函数

    CREATE  FUNCTION `delete_t_mer_info_group`(`_uid` int) RETURNS int(11)
    BEGIN
        #Routine body goes here...
    DELETE from t_mer where uid=_uid;
    DELETE from t_mer_info where uid=_uid;
    DELETE from t_mer_group where member_uid =_uid or leader_uid=_uid;
        RETURN 0;
    
    
    END

    游标test

    CREATE  PROCEDURE `curtest`()
    BEGIN
    DECLARE _uid INT;
    DECLARE _miaohao VARCHAR(20);
    DECLARE done INT DEFAULT FALSE;
     -- 遍历数据结束标志
    DECLARE cur CURSOR FOR SELECT uid,miaohao FROM tmm_tmp_testaccount ;
      -- 将结束标志绑定到游标
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
      OPEN cur;
      read_loop: LOOP
        FETCH cur INTO _uid,_miaohao;
       IF done THEN
          LEAVE read_loop;
        END IF;
        UPDATE tmm_tmp_testaccount set `desc` = NULL where uid =_uid;
      END LOOP;
      CLOSE cur;
    END

    while循环

    CREATE  PROCEDURE `add_t_statis_member_1`(in _member_uid int,in _leader_uid int,in _dayCount int)
    BEGIN
    
    DECLARE _count INT;
    DECLARE _statis_date VARCHAR(20);
    
    DELETE FROM t_statis_member_1 where member_uid = _member_uid;
    
    SET _count = _dayCount;
    
    WHILE _count > 0 DO
    set _statis_date = date_format(DATE_SUB(NOW(),INTERVAL +_count DAY), '%Y-%m-%d');
    
    
    
    insert into t_statis_member_1(statis_date,member_uid,new_platform_user,new_game_user,active_user,pay_user,total_pay,total_order_price,leader_uid)
     values 
    (
    _statis_date,/*日期_varchar(16)_NO_statis_date*/
    _member_uid,/*组员uid_bigint(20)_YES_member_uid*/
    '1',/*新增注册_int(11) unsigned zerofill_NO_new_platform_user*/
    '2',/*新增游戏注册_int(11)_NO_new_game_user*/
    '3',/*活跃人数_int(11)_NO_active_user*/
    '4',/*付费人数_int(11)_NO_pay_user*/
    '5.01',/*总付费金额_decimal(10,2)_NO_total_pay*/
    '6.01',/*总订单金额_decimal(10,2)_NO_total_order_price*/
    _leader_uid /*所属组长uid_bigint(20)_YES_leader_uid*/);
    
    
    set _count =_count-1;
    
    END WHILE;
    
    select * from t_statis_member_1 where member_uid = _member_uid;
    
    END

    拼接时间时分秒

    CONCAT(_myday,' ',LPAD(_hour,2,0),':',LPAD(_minute,2,0),':',LPAD(_second,2,0)); -- 在这个日期上加上时分秒

    生成随机ID

    CREATE FUNCTION `get_id`() RETURNS bigint(20)
    BEGIN
        #Routine body goes here...
    
        RETURN CONCAT(UNIX_TIMESTAMP(NOW())-FLOOR(RAND() * 10000),FLOOR(RAND() * 10));
    END
  • 相关阅读:
    关于WorkFlow的使用以及例子
    11 个用来创建图形和图表的 JavaScript 工具包
    产品经理看程序员的自我修养
    extern "C" 的作用
    DLL 演示
    C++中L和_T()之区别
    VMware:Configuration file was created by a VMware product with more features than this version
    使用内存映射来对文件排序
    平衡二叉树的插入删除操作
    volatile关键字的使用
  • 原文地址:https://www.cnblogs.com/milanmi/p/8718194.html
Copyright © 2020-2023  润新知