存储过程游标注意事项——表需要使用别名,如红色字体

SQL游标与动态SQL示例
本文介绍了一个使用SQL游标遍历数据并构造动态SQL的示例。通过定义接收游标数据的变量和结束标志,实现了从指定表中获取特定字段值,并基于这些值动态生成SQL语句的过程。

BEGIN
-- 需要定义接收游标数据的变量
  DECLARE productSn varchar(32);
--
  declare tableName1 varchar(30);
    DECLARE sqlstr1 varchar(250);

 declare product_sn varchar(50);
  -- 遍历数据结束标志
  DECLARE done INT DEFAULT FALSE;
 
  -- 游标
  DECLARE curRow CURSOR FOR select distinct(a.product_sn) from mes_product_info a limit 40;

  -- 将结束标志绑定到游标
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  -- 打开游标
  OPEN curRow;
 
  -- 开始循环
  read_loop: LOOP
    -- 提取游标里的数据,这里只有一个,多个的话也一样;
    FETCH curRow INTO productSn;
-- --------------------------------------------------------------------------------------------------------------------------------------------------


     SELECT '01';
    -- 这里做你想做的循环的事件
 --  SELECT productSn;

    -- 声明结束的时候
     IF done THEN
      LEAVE read_loop;
    END IF;

--    set product_sn =concat("", varRow);
    set tableName1 = concat("mes_product_info_",productSn);

-- SELECT product_sn;
  -- set tableName = concat

 SELECT tableName1;
-- SELECT varRow;
 --   call sp_create_table(tableName);

  --   set sqlstr1 = concat("insert into ",tableName," select * from mes_product_info where product_sn = '",varRow,"'");

 --   PREPARE stmt FROM @sqlstr1;
 --   EXECUTE stmt;

-- ------------------------------------------------------------------------------------------------------------------------------------------------------------
  END LOOP;
  -- 关闭游标
  CLOSE curRow;

END

转载于:https://my.oschina.net/276172622/blog/1609217

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值