zoukankan      html  css  js  c++  java
  • MySQL动态游标

    通过(准备语句+视图+静态游标)实现

    -- 建立测试表和数据
    create table webuser (username varchar(10));
    insert into webuser values ('a1'),('a2'),('a3'),('b1'),('b2'),('b3');
    commit;
    
    -- 建立存储过程
    drop procedure if exists dynamic_cursor;
    delimiter //
    CREATE PROCEDURE dynamic_cursor (IN p_name varchar(10))
    BEGIN 
        DECLARE done INT DEFAULT 0;
        DECLARE v_username varchar(10);
        DECLARE cur CURSOR for( SELECT username from webuser_view);
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    
        DROP VIEW IF EXISTS webuser_view;
    
        SET @sqlstr = "CREATE VIEW webuser_view as ";
        SET @sqlstr = CONCAT(@sqlstr , "SELECT username FROM webuser WHERE username like '", p_name,"%'");
    
        PREPARE stmt FROM @sqlstr;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    
        OPEN cur;
        f_loop:LOOP 
        FETCH cur INTO v_username;
    	IF done THEN 
    		LEAVE f_loop;  
    	END IF;
     	SELECT v_username;    
        END LOOP f_loop;
        CLOSE cur;
    END;
    //
    delimiter ;
    
    -- 测试
    call dynamic_cursor('a');
    

      

  • 相关阅读:
    mysql 数据库备份
    半同步复制
    mysql在线热备
    mysqlxtrabackup备份
    MySQL备份与恢复
    Mysql语句类型
    MySQL的体系结构
    MySQL介绍及安装
    Shell-02-if
    Shell 脚本进阶,经典用法及其案例
  • 原文地址:https://www.cnblogs.com/yuxuan/p/3479015.html
Copyright © 2011-2022 走看看