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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 = '';
                        BEGIN
                            DECLARE niban CURSOR FOR SELECT content,create_user_id,create_time from edoc_opinion_sj WHERE type='documentSendAudit' and edoc_type=E_TYPE AND edoc_id=O_ID;
                            DECLARE EXIT HANDLER FOR NOT FOUND CLOSE niban;
                            SELECT count(*) INTO _count_n1 FROM edoc_opinion_sj WHERE type='documentSendAudit' and edoc_type=E_TYPE AND edoc_id=O_ID;
                            SET n1=1;
                            OPEN     niban;
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值