MySQL存储过程遍历游标用loop嵌套循环的例子

2023-11-12

CREATE DEFINER=`root`@`%` PROCEDURE `procInitData`(IN sId1 INT,IN sId2 INT,IN sId3 INT,IN sId4 INT,IN sId5 INT,IN sId6 INT,IN sId7 INT,IN sId8 INT,IN sId9 INT,IN sId10 INT,IN pName VARCHAR(50))
BEGIN 
        ##传参例子:376,0,0,0,0,0,0,0,0,0,'肩并肩',sId为参加活动的店铺Id,pName为活动名称,
        ##sId没有则写0,一次最多传10个店铺id
        ##店铺ID
        DECLARE shopId INT DEFAULT 0;
        ##店铺名称
        DECLARE shopName varchar(64);
        ##活动ID
        DECLARE promotionId INT DEFAULT 0;
        ##店铺活动ID
        DECLARE shopPromotionId INT DEFAULT 0;
        ##活动名称
        DECLARE promotionName varchar(64);
        ##商品ID
        DECLARE commodityId INT DEFAULT 0;
        ##商品详情图片
        DECLARE imagePath varchar(128);
        ##BANNER图片1的路径
        DECLARE bannerImagePathOne varchar(128);
        ##BANNER图片2的路径
        DECLARE bannerImagePathTwo varchar(128);
        ##BANNER图片3的路径
        DECLARE bannerImagePathThree varchar(128);
        ##BANNER图片4的路径
        DECLARE bannerImagePathFour varchar(128);
        ##BANNER图片5的路径
        DECLARE bannerImagePathFive varchar(128);
        ##BANNER图片6的路径
        DECLARE bannerImagePathSix varchar(128);
        ##商品名称
        DECLARE commodityName varchar(64);
        ##商品价格
        DECLARE commodityPrice INT DEFAULT 0;
        ##商品原价
        DECLARE originalPrice INT DEFAULT 0;
        ##商品类型 1:平台活动商品,2:店铺活动商品,3:店铺商品(无活动,拓展字段)
        DECLARE commodityType varchar(64);
        ##商品状态 1:上架 2:下架
        DECLARE commodityState varchar(64);
        ##商品描述
        DECLARE commodityDesc varchar(64);
        ##是否可用抵扣券
        DECLARE couponFlag varchar(64);
        ##员工获得分润比例
        DECLARE gainRate varchar(64);

        

        #------------------------------------------
    DECLARE done INT DEFAULT FALSE;
    #变量输出结果
    DECLARE `result` varchar(2000);
        
    #定义一个接收结果集的游标查店铺 
    DECLARE cur_new CURSOR FOR select SHOP_ID,SHOP_NAME from t_shop where SHOP_ID in (sId1,sId2,sId3,sId4,sId5,sId6,sId7,sId8,sId9,sId10);

        #定义一个接收结果集的游标查平台商品,商品状态要已上架 
    DECLARE cur_new_two CURSOR FOR SELECT COMMODITY_ID,COMMODITY_NAME,COMMODITY_PRICE,ORIGINAL_PRICE,
        COMMODITY_TYPE,COMMODITY_STATE,COMMODITY_DESC,COUPON_FLAG,IMAGE_PATH,BANNER_IMAGE_PATH_ONE,BANNER_IMAGE_PATH_TWO,
        BANNER_IMAGE_PATH_THREE,BANNER_IMAGE_PATH_FOUR,BANNER_IMAGE_PATH_FIVE,BANNER_IMAGE_PATH_SIX,GAIN_RATE 
        from t_commodity where SHOP_ID=0 and COMMODITY_STATE='1';

        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

        #店铺参与的活动 pName COLLATE utf8_unicode_ci,把pName转成COLLATE utf8_unicode_ci格式因为数据库是该格式
        select PROMOTION_ID,PROMOTION_NAME INTO @promotionIds,@promotionNames FROM t_promotion where PROMOTION_NAME COLLATE utf8mb4_unicode_ci = pName;

    

    #打开游标
    OPEN  cur_new;
    #遍历店游标
    read_loop: LOOP
    #把参数赋给变量shopId,shopName
    FETCH  NEXT from cur_new INTO shopId,shopName;

    IF done THEN
    LEAVE read_loop;
    END IF;

        ##增加活动-店铺之间的关系
        INSERT INTO `t_pool_shop_promotion` VALUES (NULL,@promotionIds,@promotionNames , shopId, shopName, 
        '','','0','0','0','0','0','0',
        (SELECT DATE_ADD(current_date,INTERVAL 30 DAY)),NOW(),(SELECT DATE_ADD(current_date,INTERVAL 12 MONTH)),NOW(),NOW());

        ##查询店铺与活动之间的关系##活动结束时间要大于当前时间
        select SHOP_PROMOTION_ID,PROMOTION_NAME INTO shopPromotionId,promotionName FROM t_pool_shop_promotion where SHOP_ID =shopId and PROMOTION_ID=@promotionId and PROMOTION_END_TIME >NOW();

                SET done=0;
                ##平台商品游标-----------------开始---------------------------------------------------
        OPEN  cur_new_two;
        ##遍历游标(内循环)
                inner_loop:LOOP

                #把参数赋给变量
                FETCH  NEXT from cur_new_two INTO commodityId,commodityName,commodityPrice,originalPrice,commodityType,commodityState,commodityDesc,
                couponFlag,imagePath,bannerImagePathOne,bannerImagePathTwo,bannerImagePathThree,bannerImagePathFour,bannerImagePathFive,bannerImagePathSix,gainRate;                                

                IF done THEN
                LEAVE inner_loop;
                END IF;
                
                set @result2 = '生成店铺活动商品!' ;
                ##生成店铺活动商品,shopPromotionId与promotionName另外设置
                INSERT INTO `t_commodity` VALUES (NULL, shopId , shopPromotionId , promotionName, commodityName ,commodityPrice, originalPrice, NULL, '2', '1', commodityDesc,couponFlag, 
                imagePath, bannerImagePathOne,bannerImagePathTwo,bannerImagePathThree, bannerImagePathFour, bannerImagePathFive, bannerImagePathSix,gainRate,'0','0','0');
                
                END LOOP inner_loop;
                ##平台商品游标------------------结束---------------------------------------------------------------

                ##关闭商品游标
                CLOSE cur_new_two;

    SET done=0;
    END LOOP;
        set @result = '处理成功!';
    #关闭店铺游标
    CLOSE cur_new;
        #输出结果
    select @result;
        select @result2;
END

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL存储过程遍历游标用loop嵌套循环的例子 的相关文章

  • java实现kafka消息发送和接收

    之前写了一篇关于kafka集群搭建的点击打开链接 想了解的可以看下 今天这个实现是和前面集群对应的 使用的是新版的API 属性如果想定制自己的 需要到官方网址上面去查看一下对应的值 推介大家多去看看官方的介绍和demo 网上有些翻译过来的例
  • 这可能是史上最详细的MES介绍

    本文篇幅较长 干货满满 可以先收藏 方便日后再次查看 目录 MES 的定义 MES 的产生背景 MES 的发展历程 MES 的功能介绍 MES 与其他 IT 系统的关系 MES 的业务价值 MES 的定义 MES Manufacturing
  • 关于webconfig 的配置跨域和理解

    今日碰到一个问题 就是在很久以前碰到的跨域问题 需求 页面要显示1个图片 但是因为各种原因 导致图片在服务器2上 但是要展示的程序在服务器1 的上面 这样就造成了在显示的时候出现了跨域的问题 本来的思路为直接写个程序进行后台获得图片的路径
  • DROP DATABASE

    在做迁移时 由于某种原因导致回退 现在准备将备库的数据库删除 然后重新部署dg 但在删除备库的时候遇到一些小问题 在节点一执行 oracle sde1 sqlplus as sysdba SQL Plus Release 11 2 0 3
  • Vmware安装到本地,磁盘不够解决方案

    在使用虚拟机的时候 如果在创建的时候选择错误的盘符 那么在安装虚拟机后这个盘符的空间容量不够的问题 那么如何把虚拟机迁移出来到另外的盘符 1 找到虚拟机安装路径 打开虚拟机点击虚拟机详细信息 查看详细的虚拟机的路径 2 找到虚拟机所有的文件
  • 小程序web-view,h5页监听返回到小程序指定页面

    在h5页面进行监听返回跳转判断 created this pushHistory window addEventListener popstate function e 首页点击返回 直接关闭网页 WeixinJSBridge call c
  • QT定时器与lambda表达式联合使用

    QTimer定时器在程序开发中经常使用 比如网络请求超时检查 定时刷新数据 控制动态图开始停止等功能 一般如果是定时触发某个标志 用专来的槽函数处理会显示有点繁琐 如果用lambda表达式处理就不用专门声明定义槽函数 这样代码会更简洁 下面
  • 在Eclipse中安装JSHint插件

    离线安装 1 下载插件包 http download eclipsesource com rsternberg jshint eclipse 0 9 8 20130728 0004 b94b446 zip 2 解压缩后是一个jshint e
  • Linux 自定义简单命令

    如何让一个脚本文件没有 sh后缀输入文件名即可执行 权限问题 首先当然得让它成为可执行文件 不要出现死亡Permission denine 执行以下命令 chmod x 文件路径 文件名 两种方式 当我们输入一个命令的时候默认是从下面这些路
  • 利用Python中的statsmodels简单建立多元线性回归模型(一)

    利用Python中的statsmodels简单建立多元线性回归模型 一 概念简单介绍 多元线性回归其实是在一元线性回归的基础上增加了若干个自变量个数 数学表达式如下 其中 y y y是因变量 响应变量 0
  • ESOE-IDE v0.3 技术说明书

    ESOE IDE v0 3 技术说明书 Author Feng WeiGuo 冯卫国 Email forxm 21cn com Web http www supertree org Tel 86 0755 81030955 All Righ
  • 如何获取股票预测数据集“上海证券综合指数”(上证综指,Shanghai Composite Index)?

    以下网址可提供较为全面的数据集 涵盖Date Opening price Highest price Lowest price Closing price Volume Turnover Ups and Downs Change指标 即日期
  • 10分钟教你用Python玩转微信之抓取好友个性签名制作词云

    01 前言 展示 各位小伙伴我又来啦 今天带大家玩点好玩的东西 用Python抓取我们的微信好友个性签名 然后制作词云 怎样 有趣吧 好了 下面开始干活 我知道你们还是想先看看效果的 后台登录 词云 02 环境准备 Python版本 3 6
  • Linux基础笔记18

    fdisk 分区工具 fdisk 这个古老的软件并不认识 GPT 所以 fdisk 只支持 MBR 的分区模式 且磁盘小于2T 大于了就不能使用 fdisk 进行分区了 新磁盘的分区 一块新加的磁盘的分区方式 检查系统中需要分区的磁盘 fd
  • Vue:Vue动画效果全解析

    Vue中的CSS动画原理 当使用transition 标签包裹标签时 Vue会自动分析其css样式 从而构建动画流程 下图中的点的开头到结尾即为一个动画流程 当一个动画流程执行时 内部被transition 标签包裹的标签瞬间增加两个fad
  • 深度之眼Paper带读笔记NLP.12:层次化attention网络.Baseline.09

    文章目录 前言 第一课 论文导读 文本分类 文本挖掘 数据类型 文本分类 相关技术 基于深度学习的文本分类 baseline涉及的三篇TC的论文 分层注意网络 前期知识储备 第二课论文精读 论文背景 论文整体框架 论文标题 层次注意力网络
  • Postman的高级用法一:重新认识postman核心模块

    本请求示例来自于免费天气API 实况天气接口API开发指南 未来一天天气预报api 天气API 关于Postman的核心模块 全局变量 请求接口 请求体 预处理脚本 测试用例模块 测试者可以针对请求响应做测试 编写测试用例 请求响应 测试用
  • webpack基础配置

    直接上代码 const path require path 为html文件中引入的外部资源如script link动态添加每次compile后的hash 防止引用缓存的外部文件问题 可以生成创建html入口文件 比如单页面可以生成一个htm
  • MYSQL数据库(七)MySQL架构和性能优化

    成功不易 加倍努力 MySQL架构和性能优化 4 1 存储引擎 4 1 1 MyISAM存储引擎 4 1 2 InnoDB引擎 4 1 3 其它存储引擎 4 1 4 管理存储引擎 4 2 MySQL中的系统数据库 4 3 服务器配置和状态

随机推荐

  • 数据结构与算法(二):线性表

    一 基本概念 二 顺序表 三 链表 1 单向链表 2 单向循环链表 3 双向链表 4 静态链表 上一篇 数据结构与算法 一 概述 中介绍了数据结构的一些基本概念 并分别举例说明了算法的时间复杂度和空间复杂度的求解方法 这一篇主要介绍线性表
  • linux中用conda安装大于3.6版本的R

    最开始我想安装一个r 用下面这个指令看了看发现最新版本竟然只有3 6 所以就想安装新版本的r conda search r base 如果想安装新版本的R的话 就不能同conda的默认安装渠道 所以我们首先添加一个渠道 conda conf
  • 测试类型分类

    测试类型 按方向 功能测试 性能测试 安全测试 兼容性测试 安装测试等 按阶段 单元测试 集成测试 系统测试 验收测试 按测试技术 黑盒测试 白盒测试 灰盒测试 按是否运行 静态测试 动态测试 其他 手工测试 自动化测试 冒烟测试 回归测试
  • 如何优雅的快速下载谷歌云盘的大文件 (一)

    一 注册MultCloud 官网地址 不让放网址 注册好了之后要在邮箱收一个激活链接 然后就可以登陆网页版了 二 加入云盘 点击云管理器 点击添加云盘 我们以从谷歌 百度作为示例 由于BaiDu云盘的限制 只能操作 我的应用数据 gt li
  • uni-app从入门到实战

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 uni app是啥 uni app是一个使用vue js来开发所有前端应用的框架 开发者开发一套代码可以发布到os 安卓 h5等各种小程序 u
  • notepad++ 文本文件内容丢失恢复

    今天用着notepad 不知道怎的 突然就崩溃了 然后我下次打开的时候弹了个框 我按了OK之后 里面所有的内容都不见了 网上百度了半天 总结如下 在如下目录下有notepad 会自动保存的文件 C Users Administrator A
  • mysql编码设置

    mysql 创建 数据库时指定编码很重要 很多开发者都使用了默认编码 乱码问题可是防不胜防 制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题 网页数据一般采用UTF8编码 而数据库默认为latin 我们可以通过修改数据库默认编码方式
  • spring-mvc Restful风格

    Restful风格 概念 Restful就是一个资源定位及资源操作的风格 不是标准也不是协议 只是一种风格 基于这个风格设计的软件可以更简洁 更有层次 更易于实现缓存等机制 对比 之前controller类的写法 resource文件里存在
  • 创建conda环境配置出现conda env create -f environment.yml报错解决办法

    解决gitub项目conda创建环境environment yml出现的Solving environment failed 和 ResolvePackageNotFound错误的解决办法记录 问题 创建conda环境配置输入 conda
  • unity水特效与标准资源包的下载导入

    由于本个实例需要使用unity的标准资源包 一 方法一 1 进入unity官网 https unity cn 2 点击页面的Beta版本 3 找到对应自己版本下载即可 方法二 在unity中的商店中搜索 Standard Asset下载导入
  • 西门子PLC常用通信协议以及常用协议的区别(一)

    RS232 是硬件接口 描述 是目前最常用的串行通信接口 RS232 C只是表示RS232的版本 简称都是一样的 特性 标准接口采用9针或者25针D型接口 常用的一般是9针接口 因为大部分连接不需要使用对方的传送控制信号 只需要三条线 即发
  • 2020Unity中文项目用Vs2019打开脚本后一直Importing assets

    unity2018就不会有这个问题 而且我的External Script Editor 都设置的没有问题 新建一个项目中文名 在不用vs2019打开脚本之间都不会有这个进度条 一打开后就会有 高级编码设置的Unicode8 也不起作用了
  • 嘉立创PCB CAM软件

    概述 在PCB CAM软件中 Genesis2000 UCAM CAM350等国外软件占了大壁江山 其中的Genesis2000更是占了绝对份额 而中国却没有一款成熟可用的PCB CAM工业软件 根据公开资料显示 中国是PCB的制造大国 2
  • 快速学习Flutter

    文章目录 写在前面 Flutter官网 Flutter基本知识 Flutter 的特性 Flutter Windows环境搭建 查看文档时有几点注意 1 中国镜像地址 2 搭建 Android 开发环境 3 Flutter SDK Flut
  • MyCAT实现MySQL的读写分离

    在MySQL中间件出现之前 对于MySQL主从集群 如果要实现其读写分离 一般是在程序端实现 这样就带来一个问题 即数据库和程序的耦合度太高 如果我数据库的地址发生改变了 那么我程序端也要进行相应的修改 如果数据库不小心挂掉了 则同时也意味
  • 全排列、子集合subset、目标和combation、树的路径和问题

    主要的方法 深度优先搜索 回溯算法 宽度优先搜索 是否有相同元素需要考虑等问题 针对所给问题 确定问题的解空间 首先应明确定义问题的解空间 问题的解空间应至少包含问题的一个 最优 解 确定结点的扩展搜索范围 for等一系列循环等问题 以深度
  • matlab如何读取一个文件夹下所有文件,Matlab获取一个文件夹下所有文件名

    Matlab获取一个文件夹下所有文件名 fileFolder fullfile D MATLAB bin trc dirOutput dir fullfile fileFolder trc fileNames dirOutput name
  • 解决IDEA中ctrl+shift+f快捷键搜索没反应的问题

    文章目录 0写在前面 1 问题解决 1 1 直接切换英文输入法 1 2 win10 输入法 1 3 搜狗输入法 1 4 其他 2 写在末尾 0写在前面 今天想使用 在文件中查询 功能 使用ctrl shift f进行搜索的时候 疯狂的按组合
  • keil CMSIS_DAP.DLL missing

    由于keil版本支持问题 可以下载以下版本的CMSIS DAP DLL进行替换 CMSIS DAP DLL官方下载地址 百度云下载 提取码 g8ia keil安装目录如 D Keil v5 ARM BIN 先删除原来的CMSIS DAP D
  • MySQL存储过程遍历游标用loop嵌套循环的例子

    CREATE DEFINER root PROCEDURE procInitData IN sId1 INT IN sId2 INT IN sId3 INT IN sId4 INT IN sId5 INT IN sId6 INT IN sI