DELIMITER $$USE `msdb`$$DROP PROCEDURE IF EXISTS `dicom_move_del`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `dicom_move_del`()
BEGIN
          DECLARE  del_type_temp VARCHAR(40);
          DECLARE  uid_temp VARCHAR(200);
          DECLARE  dicom_path VARCHAR(200);
          DECLARE _v_done  INT DEFAULT 0;
          DECLARE temFlag  INT;
          DECLARE del_cur CURSOR FOR SELECT  del_type,dicom_uid FROM dicom_move_temp  a
       WHERE NOT EXISTS(SELECT 1 FROM dicom_move_temp  WHERE a.dicom_uid=dicom_uid AND a.id<id);
           DECLARE CONTINUE HANDLER FOR NOT FOUND,SQLSTATE '02000'  SET _v_done = 1;
           OPEN del_cur;
              FETCH del_cur INTO del_type_temp ,uid_temp;
    REPEAT
    IF NOT _v_done THEN
            IF   del_type_temp='patient'     THEN
 
             DELETE a,b FROM patient a,dicom_move_temp b WHERE a.patientId = b.dicom_uid AND a.patientId=uid_temp;            
             
           END IF;
           IF del_type_temp='study'   THEN
               DELETE a,b FROM study a,dicom_move_temp b WHERE a.studyInstanceUID = b.dicom_uid AND a.studyInstanceUID=uid_temp;  
             
           END IF;
          IF  del_type_temp='series'   THEN
            DELETE a,b FROM series a,dicom_move_temp b WHERE a.seriesInstanceUID = b.dicom_uid AND a.seriesInstanceUID=uid_temp;  
          
           END IF;
          IF del_type_temp='instance'  THEN
           UPDATE dicom_move_temp SET filepath = (SELECT filepath FROM dicom_file_info f
           WHERE NOT EXISTS(SELECT 1 FROM dicom_file_info  WHERE f.sopinstanceUid=sopinstanceUid AND f.id<id) AND sopinstanceUid=uid_temp);
           DELETE a,b FROM instance a,dicom_file_info b WHERE a.sopInstanceUID = b.sOPInstanceUID AND a.sOPInstanceUID=uid_temp;  
           
          END IF;
          FETCH del_cur INTO del_type_temp ,uid_temp;
          COMMIT;
      END IF;
       UNTIL _v_done =1
       END REPEAT;
       CLOSE del_cur;
 END$$DELIMITER ;
表里面有 为 patient,study,series,instance , 为什么没有按我写的逻辑执行完呢  如 有的 patient的语句都没删除,哪里逻辑不对啊