MySQL之游标

delimiter $
create PROCEDURE phoneDeal()
BEGIN
    DECLARE  ids varchar(64);

    -- 遍历数据结束标志
    DECLARE done INT DEFAULT FALSE;
    -- 游标
    DECLARE cur_account CURSOR FOR SELECT id FROM shop_category WHERE pid='0';
    -- 将结束标志绑定到游标
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    -- 打开游标
    OPEN  cur_account;
    -- 遍历
    read_loop: LOOP
            -- 取值 取多个字段
            FETCH  NEXT from cur_account INTO ids;
            IF done THEN
                LEAVE read_loop;
             END IF;
                            set @i = (SELECT UUID());
                            update shop_category set id = @i  WHERE id=ids;
                            update shop_category set id=UUID(), pid = @i  WHERE pid=ids;
    END LOOP;

    CLOSE cur_account;
END $

call phoneDeal();
posted @ 2025-04-08 23:42  程序员の奇妙冒险  阅读(9)  评论(0)    收藏  举报