MySQL存储过程,多个嵌套循环,动态SQL拼接更新

本文档展示了如何使用MySQL存储过程处理多个嵌套循环,并通过动态SQL拼接来更新数据。存储过程首先声明并初始化了多个变量,然后通过游标遍历`edoc_summary`表,根据不同的`edoc_type`执行不同类型的逻辑,包括获取和拼接不同类型的评论意见,最后将这些意见更新到对应的表格字段中。
摘要由CSDN通过智能技术生成

DROP  PROCEDURE  IF EXISTS createopinion33; 
# 创建存储过程
CREATE PROCEDURE createopinion33()

BEGIN
    DECLARE s1 int;
    DECLARE _count1 int default 0;
    DECLARE n1 int;
    DECLARE _count_n1 int default 0;

    DECLARE S_ID bigint(20);
    DECLARE F_ID bigint(20);
    DECLARE F_RID bigint(20);
    DECLARE O_ID bigint(20);
    DECLARE E_TYPE int;
    DECLARE TABLE_NAME varchar(30);
    # opinion意见需要的字段
    DECLARE _content longtext;
    DECLARE _member_id decimal(19);
    DECLARE _member_name varchar(255);
    DECLARE _create_time varchar(255);
    
    DECLARE niban_oppion_send longtext;
    DECLARE hegao_oppion longtext;
    
    DECLARE niban_oppion_recevie longtext;
     
    # 游标循环控制变量
    DECLARE done INT DEFAULT 0;
    # 定义游标结果集
    DECLARE edocSummaryIds CURSOR FOR SELECT id,form_app_id,form_recordid,SUBSTRING(ID,1,LENGTH(ID)-5) oldId,edoc_type FROM edoc_summary;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    
    SELECT count(*) INTO _count1 FROM edoc_summary;
    SET s1=1;
    # 打开游标
    OPEN edocSummaryIds;
        WHILE s1<_count1+1 DO
            FETCH edocSummaryIds INTO S_ID,F_ID,F_RID,O_ID,E_TYPE;
        
                SELECT tablename INTO TABLE_NAME FROM form_definition_temp WHERE DI = F_ID;
                
                IF E_TYPE = 0 THEN  
                
                        SET niban_oppion_send = '';
      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值