delimiter &&
create PROCEDURE findProjectDetailsByProjectId(in p_userId int)
BEGIN
   DECLARE done INT DEFAULT 0;
   DECLARE d_projectId int;
     DECLARE projectLength int;
     DECLARE c_projectId VARCHAR(100) default '';
   DECLARE findProject_cur CURSOR for
            select t1.projectId
                 from (
                    select * from  odao_admin.admin_login_user where dept_id in(
                        select deptId from odao_admin.admin_role_department where roleId  = (select role_id from odao_admin.admin_role_user where user_id = p_userId )
                    )) t,odao_wpf_project t1 where t.user_id = t1.userId and t1.`status` = 1  ;
      DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    OPEN findProject_cur;
              findProject_loop:LOOP
                     FETCH findProject_cur INTO d_projectId;
                        IF done THEN
                                LEAVE findProject_loop;
                        END IF;
                        set c_projectId = CONCAT(c_projectId,CONCAT(d_projectId,',')) ;
              END LOOP;
        CLOSE findProject_cur;

        set projectLength = (select char_length(c_projectId));

        set c_projectId = (select left(c_projectId,char_length(c_projectId)-1)  );

        set @vsql = CONCAT('select t2.*,t3.* from odao_wpf_board_task t2,(select t.boardId,boardName,t1.* from odao_wpf_board t,(select boardClassId,boardClassName from odao_wpf_boardclass where projectId in(',c_projectId,') ORDER BY orderId  ) t1 where t.boardClassId = t1.boardClassId ) t3 where t2.boardId = t3.boardId' );
      
        select @vsql;

        prepare stmt from @vsql;
     EXECUTE stmt;     
     deallocate prepare stmt;    
    
    
    
END
&&
delimiter ;

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
  • 2022-01-10
  • 2022-02-17
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-30
  • 2022-03-10
  • 2022-12-23
  • 2021-07-06
  • 2022-12-23
相关资源
相似解决方案