• MYSQL PROCEDURE 测试用例


    /**
     * 查询俱协信息
     */
    DROP PROCEDURE IF EXISTS `get_club_list`;
    DELIMITER $$
    CREATE PROCEDURE `get_club_list`(
        -- 页码
        IN i_page_num int unsigned,
        -- 一页数量
        IN i_page_size int unsigned
    )
    BEGIN
        -- 定义变量
        DECLARE v_num int unsigned DEFAULT 0;
        SET v_num = i_page_num*i_page_size;
        SELECT * FROM (
            SELECT 
                `t`.*,
                `club_area`.`name` AS `area_name`,
                `club_city`.`name` AS `city_name`
            FROM (
                SELECT * FROM `club_record` WHERE `status` = '0' ORDER BY `createtime` DESC LIMIT v_num,i_page_size
            ) AS `t` LEFT JOIN `club_area` ON (
                `t`.`area_id` = `club_area`.`id`
            ) LEFT JOIN `club_city` ON (
                `t`.`city_id` = `club_city`.`id`
            )
        ) AS `tt` ORDER BY `createtime` DESC;
    END $$
    DELIMITER ;
    
    CALL get_club_list(0,10);
    /**
     * 测试-删除
     */
    DROP PROCEDURE IF EXISTS `test_del`;
    DELIMITER $$
    CREATE PROCEDURE `test_del`(
        -- 删除一组id
        IN i_ids varchar(255)
    )
    BEGIN
        -- 定义变量
        DECLARE v_i int unsigned DEFAULT 1;
        DECLARE v_num int unsigned DEFAULT 0;
        DECLARE v_id int unsigned DEFAULT 0;
        SET v_num = LENGTH(i_ids) - LENGTH( REPLACE(i_ids,',','') ) + 1;
    
        WHILE v_i <= v_num DO
            SET v_id = SUBSTRING_INDEX( SUBSTRING_INDEX(i_ids,',',v_i),',',-1 );
            DELETE FROM `club_area_copy` WHERE `id` = v_id;
            DELETE FROM `club_city_copy` WHERE `area_id` = v_id;
            -- SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(i_ids,',',v_i),',',-1 );
            SET v_i = v_i+1;
        END WHILE;
    END $$
    DELIMITER ;

    MYSQL函数:

    1. SUBSTRING_INDEX(str, delim, count)

    str: 要处理的字符串

    delim: 分割符

    count: 计数 如果为正数,则从左开始数,如果为负数,则从右开始数

    -- SET @str = 'www.baidu.com';
    
    SELECT substring_index(@str,'.',1); # www
    
    SELECT substring_index(@str,'.',2); # www.baidu
    
    SELECT substring_index(@str,'.',-1); # com
    
    SELECT substring_index(@str,'.',-2); # baidu.com
    
    SELECT substring_index( substring_index(@str,'.',-2),'.',1 ); # baidu
    
    SELECT LENGTH(@str); # 13
    
    SELECT LENGTH( REPLACE(@str,'.','') ); # 11
    
    -- 得到结果数
    SELECT LENGTH(@str) - LENGTH( REPLACE(@str,'.','') ) + 1; # 3
  • 相关阅读:
    RDS MySQL 空间问题的原因和解决
    debian8最小化安装,字符界面的中文配置
    ekho安装及测试(中文文字转语音)
    sqlite 常用命令
    记录一次并没有什么用的对比测试
    debian 8 解压安装mysql(版本5.7.19)
    收藏的书录,值得花时间去读的书
    shell脚本监控Linux系统的登录情况
    gcc cc1: all warnings being treated as errors
    FreeSWITCH取消Digest校验流程
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/9214777.html
Copyright © 2020-2023  润新知