SELECT count(1) INTO v_count FROM T_invvalbalaccount;
        IF v_count>0 THEN --处理先进先出,后进先出的货品
              --处理了部分业务
              DELETE  FROM T_invvalbalaccount WHERE T_QuanAmount=0;            SELECT count(1) INTO v_count FROM T_invvalbalaccount WHERE T_invvalbalaccount.OutType='1';
           --v_count=0 时怎么让WHILE退出呢
        END WHILE ;
如上代码,我用WHILE循环处理,怎么保证v_count=0时退出,我做了发现没退出。

解决方案 »

  1.   

    示例:
    DELIMITER $$
    drop procedure if exists rr$$
    CREATE
        /*[DEFINER = { user | CURRENT_USER }]*/
        PROCEDURE `test`.`rr`(dd varchar(10))
        /*LANGUAGE SQL
        | [NOT] DETERMINISTIC
        | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
        | SQL SECURITY { DEFINER | INVOKER }
        | COMMENT 'string'*/
        BEGIN
    declare v1 integer;
    set v1=10;
    zz:WHILE v1 > 0 DO
            SET v1 = v1 - 1;
    if v1=2 then
    begin
    select 'dddd';
    leave zz;
    end;
    end if;
      END WHILE;    END$$DELIMITER ;
      

  2.   


    SELECT count(1) INTO v_count FROM T_invvalbalaccount 
    WHILE v_count>0 do 
    --处理业务,删除不合理的记录
    SELECT count(1) INTO v_count FROM T_invvalbalaccount ;
    END WHILE ;这样处理不对吗?
      

  3.   

    SELECT count(1) INTO @v_count FROM T_invvalbalaccount 
    WHILE @v_count>0 do 
    --处理业务,删除不合理的记录
        SELECT count(1) INTO @v_count FROM T_invvalbalaccount ;
    END WHILE
      

  4.   

    示例:
    DELIMITER $$DROP PROCEDURE IF EXISTS `test`.`DD1`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `DD1`(dd varchar(10))
    BEGIN
    SELECT COUNT(*) INTO @DD FROM ZZ.JZG1 WHERE BH=DD;
    IF @DD>1 THEN
    BEGIN
    SELECT 'DFFFF';
    END;
    ELSE
    BEGIN
    SELECT 'AAAA';
    END;
    END IF;    END$$DELIMITER ;