精华内容
下载资源
问答
  • mysql存储过程repeat循环游标基本步骤

    千次阅读 2017-10-23 20:51:48
    create procedure 存储过程名() DECLARE uid INT; #注意声明的变量名不能跟表的字段名一致,否则会报错。如user的主键是id,那么这里声明用来存id值的变量名就不能为id,可以改为uid等 DECLARE done INT DEFAULT 0; ...

    create procedure 存储过程名()

    DECLARE uid INT; #注意声明的变量名不能跟表的字段名一致,否则会报错。如user的主键是id,那么这里声明用来存id值的变量名就不能命名为id,可以改为uid等

    DECLARE done INT DEFAULT 0;  #repeat结束标识

    DECLARE userCur cursor for select  id  from user; #声明游标

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; #表示当循环列表完毕后将done设置为1


    open userCur; #打开游标

    REPEAT //进入循环

    FETCH userCur into uid;  //赋值给变量

    IF NOT DONE THEN  //当done!=1继续循环

    搞事情.....

    END IF;

    UNTIL done END REPEAT;   //直到done=1时结束循环

    END;



    展开全文
  • -- 用上文讲到的ordertotal存储过程并传入参数,返回营业税计算后的合计传给t变量 INSERT INTO bigana_result_temp (catName, price, unit, location, name, date) SELECT DISTINCT c.name catName, format(avg...
    BEGIN
            -- 声明局部变量
            DECLARE done BOOLEAN DEFAULT 0;
            DECLARE goods_name varchar(266);
            DECLARE cat_name varchar(255);
     
            DECLARE goname CURSOR 
            For 
            SELECT b.goodsName as goodsName,c.name as catname FROM es_spider_bigdata b,es_goods_cat  c where c.cat_id=b.catid  GROUP BY goodsName ;
            -- 当SQLSTATE为02000时设置done值为1
             DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
    				
            -- 创建一个ordertotals的表
            -- CREATE TABLE IF NOT EXISTS ordertotals( order_num INT , total DECIMAL(8,2))
            start transaction;
    				delete from bigana_result_temp where DATE_SUB(curdate(),INTERVAL 30 day)>date;
    				commit;
            Open goname ;
            -- 开始循环
            REPEAT
                 FETCH goname INTO goods_name,cat_name;
              IF done<>1 THEN
            
            -- 把当前行的值赋给声明的局部变量o中
            
            -- 用上文讲到的ordertotal存储过程并传入参数,返回营业税计算后的合计传给t变量
           INSERT INTO bigana_result_temp (catName, price, unit, location, name, date) SELECT DISTINCT
      c.name catName,
    	format(avg(goodsprice), 2) price,
    	u.unit unit,
    	e.location location,
    	e.goodsName name,
    	date_format(e.date, '%y-%m-%d') date
    FROM
    	es_goods_cat c,
    	es_spider_bigdata e,
    	(
    		SELECT
    			unit
    		FROM
    			es_spider_bigdata t,
    			es_goods_cat c
    		WHERE
    			t.goodsname = goods_name
    		AND t.catid = c.cat_id
    		AND c. NAME = cat_name
    		GROUP BY
    			unit
    		ORDER BY
    			count(unit) DESC
    		LIMIT 0,
    		1
    	) u
    WHERE
    	e.unit = u.unit
    AND goodsname = goods_name
    AND c.cat_id = e.catid
    AND c. NAME = cat_name
    -- 正式环境中需要放开
    -- And e.date=CURDATE(); 
    GROUP BY
    	e.location;
        end if;
            -- 把订单号和合计插入到新建的ordertotals表中
           UNTIL done  END REPEAT;
          
            -- 关闭游标
            Close goname ; 
            END
    if 判断和 fetch 游标数据的顺序不能颠倒
    
    
    展开全文
  • begin  declare b int;  declare use_no varchar(10);  declare use_name varchar(400); ... declare card_id varchar(400);... END REPEAT;  close cur_1; -- 关闭游标 end  

    begin
       declare  b int;
       declare  use_no    varchar(10);
       declare  use_name  varchar(400);
       declare  card_id   varchar(400);
       declare  count     int;
       declare  cur_1  cursor for
                                                         select s2.member_id,
                                                                        s2.realname,
                                                                        s2.card_id
                                                            from  bh_member.mb_member s1,bh_member.mb_member_info s2
                                                            where s1.id = s2.member_id;
       -- DECLARE CONTINUE HANDLER FOR NOT FOUND SET b=1;
        SET b = 0;
        -- (1) sql 赋值
        select count(1)  INTO count  
            from   bh_member.mb_member s1,bh_member.mb_member_info s2
          where  s1.id = s2.member_id;
       
       
        OPEN cur_1;    -- 打开游标
        REPEAT
              -- 从游标中循环取值
            FETCH cur_1 INTO use_no, use_name, card_id;

            insert into zh_ceshi(use_no,use_name,card_id)  values(use_no, use_name, card_id);
            set b = b+1;
            UNTIL  b = count        (不加分号)
        END REPEAT;
        close cur_1;          -- 关闭游标
    end
     

    展开全文
  • REPEAT FETCH taskCursor INTO tableName; IF not done THEN set @sql=concat('alter table ',tableName,' add cust_type char(1) DEFAULT NULL COMMENT "A/B/C/D/E/F"'); PREPARE stmt from @sql; ...
    -- 给task表及子表添加客户类型字段
    DELIMITER // --结束符号定义为//
    drop procedure if exists taskAddFieldPro// 
    CREATE PROCEDURE taskAddFieldPro()  
    BEGIN  
        DECLARE tableName varchar(50) default '';   
        DECLARE done INT DEFAULT 0;  
        DECLARE taskCursor CURSOR FOR select table_name from information_schema.tables where table_schema='uc_ipcc_cloud_ai' and table_name like  'tb_ucpaas_task_run%';  
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;  
        OPEN taskCursor;  
        REPEAT  
          FETCH taskCursor INTO tableName;  
          IF not done THEN  
             set @sql=concat('alter table ',tableName,' add cust_type char(1) DEFAULT NULL COMMENT "A/B/C/D/E/F"');
             PREPARE stmt from @sql; 
             execute stmt;
          END IF;  
        UNTIL done END REPEAT;  
        CLOSE taskCursor;
    END 
    //
    DELIMITER; -- 重新定义为分号
    CALL taskAddFieldPro();

    展开全文
  • MySQL存储过程-REPEAT

    2019-08-11 21:30:22
    BEGIN DECLARE count INT DEFAULT 10; DECLARE js INT DEFAULT 0;...REPEAT #相当于DO-WHILE SET count = count -1; SET js = js+1; UNTIL count<0 #符合条件就退出 END REPEAT; SELECT js; #11 END ...
  • 存储过程:repeat

    2012-08-20 10:34:49
    repeat insert into t values (v); set v = v + 1; until v >= 5 end repeat; end; // delimiter ; call p15(); select * from t; /* +------+ | s1 | +------+ | 5 | | 0 | | 1 | | 2 | | 3 | | 4...
  • 主要介绍了mysql存储过程之循环语句(WHILE,REPEAT和LOOP)用法,结合实例形式分析了mysql存储过程循环语句WHILE,REPEAT和LOOP的原理、用法及相关操作注意事项,需要的朋友可以参考下
  • mysql存储过程中的repeat循环,实际上就是普通意义上的do...until...break循环,分为以下步骤: 执行循环体 判断until条件 条件为真,退出循环 条件为假,继续循环 2.存储过程 CREATE DEFINER=`root`@`...
  • CREATE DEFINER=`root`@`localhost` PROCEDURE `PRO_REPEAT`() BEGIN DECLARE i INT DEFAULT 100; REPEAT BEGIN INSERT INTO testa (ID) VALUES(i); SET i=i+1; END; /*当满足条件的时候结束此代码块*/ ...
  • repeat SQL until 条件 end repeat; 就是相当于其他语言中的: do{ # }while(); mysql> create procedure p1p() -> begin -> declare count int de...
  • 在使用循环时 发现sql陷入了死循环,单个执行sql 的时候就没问题,最后发现是until ( a ==b ) 结束循环体的条件有问题 当 == 俩边都为null 时并不会返回true结束循环 所以我们在循环体中对a,b 的处理一点要保证不要...
  • -> end -> // Query OK, 0 rows affected (0.00 sec) 执行存储过程 mysql> call proce_repeat()// ERROR 1062 (23000): Duplicate entry '10' for key 'PRIMARY' mysql> call proce_repeat()// Query OK, 1 row ...
  • repeat结构 -- 计算从1加到n的值 -------> repeat create procedure pro_test9(n int) begin declare total int default 0; repeat set total=total+n; set n=n-1; until n=0 end repeat; select ...
  • MySQL提供循环语句,允许我们根据条件重复执行一个SQL代码块其中有三个循环语句:WHILE,REPEAT和LOOP,我们接下来分别看下。首先是WHILE语句来看下语法:WHILE expression DO statements END WHILE WHILE循环在...
  • 1.创建测试表 CREATE TABLE tb1(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, num INT  )ENGINE=INNODB CHARSET...2.演示repeat的插入数据 DELIMITER // DROP PROCEDURE IF EXISTS p4// CREATE PROCEDURE p4(IN
  • 存储过程[游标+repeat用法]

    千次阅读 2010-10-15 11:25:00
    /*mysqll过程*/CREATE PROCEDURE `NewProcedure`(`Param` int(11))BEGINDECLARE b INT default 0;declare var_id,var_value varchar(20) default null;DECLARE cur1 cursorFORselect testId from test2 ;declare ...
  • MySQL存储过程中游标循环的跳出和继续操作示例 MySQL中的游标循环操作常用的有三种,LOOP,REPEAT,WHILE.三种循环 1.REPEAT DECLARE num INT; DECLARE my_string VARCHAR(255); REPEAT SET my_string =CONCAT(my_...
  • 文章目录一、存储过程1.1、语法:1.2、示例1.2.1、无参数的存储过程1.2.3、只有一个 in 参数的存储过程1.2.3、包含 in 参数和 out 参数的存储过程1.2.4、包含 inout 参数的存储过程1.2.5、附:根据 时间 修改 状态:...
  • 本文总结了mysql常见的三种循环方式:while、repeat和loop循环。还有一种goto,不推荐使用。 -- MySQL中的三中循环 while 、 loop 、repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和 /* ...
  • 以下内容包含: 1,分支语句:【 条件结构:if … then … elseif … then … end;  分支结构:case … when...—》数据库定义函数和存储过程 对指令集进行封装; > 定义变量: > #定义函数语句:create ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,685
精华内容 12,674
关键字:

存储过程repeat