电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2028 人浏览分享

mysql动态游标学习(mysql存储过程游标)

[复制链接]
2028 0

代码如下:

-- 建立测试表和数据

  1. create table webuser (username varchar(10));
  2. insert into webuser values ('a1'),('a2'),('a3'),('b1'),('b2'),('b3');
  3. commit;
复制代码


-- 建立存储过程

  1. drop procedure if exists dynamic_cursor;
  2. delimiter //
  3. CREATE PROCEDURE dynamic_cursor (IN p_name varchar(10))
  4. BEGIN
  5.     DECLARE done INT DEFAULT 0;
  6.     DECLARE v_username varchar(10);
  7.     DECLARE cur CURSOR for( SELECT username from webuser_view);
  8.     DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  9.     DROP VIEW IF EXISTS webuser_view;

  10.     SET @sqlstr = "CREATE VIEW webuser_view as ";
  11.     SET @sqlstr = CONCAT(@sqlstr , "SELECT username FROM webuser WHERE username like '", p_name,"%'");

  12.     PREPARE stmt FROM @sqlstr;
  13.     EXECUTE stmt;
  14.     DEALLOCATE PREPARE stmt;

  15.     OPEN cur;
  16.     f_loop:LOOP
  17.     FETCH cur INTO v_username;
  18.     IF done THEN
  19.         LEAVE f_loop;  
  20.     END IF;
  21.     SELECT v_username;   
  22.     END LOOP f_loop;
  23.     CLOSE cur;
  24. END;
  25. //
  26. delimiter ;
复制代码



-- 测试

  1. call dynamic_cursor('a');
复制代码




您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.