mysql 循环

BEGIN
    DECLARE postUuid VARCHAR(40);
    DECLARE post VARCHAR(40);
        SELECT
        t2.user_id INTO postUuid
        FROM (
            SELECT
                IF(e.post_user_id IS NULL, d.user_uuid, e.post_user_id) AS user_uuid
            FROM (
                SELECT
                    b.uuid AS reception_uuid
                FROM (
                        SELECT
                            b.biz_id
                        FROM
                            bpm_process_instance a
                        INNER JOIN biz_factoring_reception b ON a.biz_uuid = b.uuid
                        AND b.sys_status = 1
                        WHERE
                            a.sys_status = 1
                        AND a.instance_id = instanceId
                ) t
                INNER JOIN biz_factoring_reception b ON t.biz_id = b.biz_id
                AND b.sys_status = 1
                WHERE b.receive_file_type = 0
                ORDER BY b.receive_no ASC
                LIMIT 1
            ) a
            INNER JOIN bpm_process_instance b ON a.reception_uuid = b.biz_uuid
            AND b.sys_status = 1
            INNER JOIN bpm_activity c ON b.instance_id = c.instance_id
            AND c.ACTIVITY_ID = 'o_42'
            AND c.sys_status = 1
            INNER JOIN bpm_task_user d ON c.task_id = d.task_id
            AND d.sys_status = 1
            LEFT JOIN biz_post_assign_info e ON d.user_uuid = e.leave_user_id
            AND e.post_start_date <= '2019-04-01'
            AND e.post_end_date >= '2019-04-01'
            AND e.sys_status = 1
        ) t1 
        INNER JOIN sys_user t2 ON t1.user_uuid = t2.uuid
        AND t2.sys_status = 1;
        IF postUuid IS NOT NULL THEN
            SET post = postUuid;
            SELECT 
                IF (
                    COUNT(a.post_user_id)!=1,
                    'flag',
                    a.post_user_id
                ) INTO post
                FROM biz_post_assign_info a,sys_user b
                WHERE 
                    a.post_start_date <= '2019-04-01'
                AND a.post_end_date >= '2019-04-01'
                AND a.leave_user_id = b.uuid
                AND b.user_id = post
                AND a.sys_status = 1
                AND b.sys_status = 1;
            IF post != 'flag' THEN
                REPEAT
                    SELECT
                    IF (
                        COUNT(post_user_id) != 1,
                        'flag',
                        post_user_id
                    ) INTO post
                    FROM
                        biz_post_assign_info
                    WHERE
                        post_start_date <= '2019-04-01'
                    AND post_end_date >= '2019-04-01'
                    AND leave_user_id = post;
                        IF post != 'flag' THEN
                        SET postUuid = post;
                        END IF;
                UNTIL post = 'flag'
                END REPEAT;
                SELECT user_id INTO postUuid FROM sys_user WHERE uuid = postUuid;
            END IF;
        END IF;
    RETURN postUuid;
END

 

posted on 2019-04-15 16:13  小白菜好吃  阅读(184)  评论(0编辑  收藏  举报

导航