如何知道循环的最后位置?

时间:2013-05-14 21:52:30

标签: mysql

我在一个过程中使用以下sql:

    READ_LOOP: LOOP
    FETCH CUR INTO xStatus;
IF done THEN LEAVE READ_LOOP;
END IF;
    set i = i+1;        
    if i mod 3 = 0 then        
        SET DescrStatus = CONCAT(DescrStatus, xStatus, ' | ', CHAR(13));
    else if i = 1 then
            SET DescrStatus = CONCAT(xStatus, ' | ');
        else SET DescrStatus = CONCAT(DescrStatus, xStatus, ' | '); end if;
    end if;
END LOOP READ_LOOP;

我想知道循环的最后位置。

2 个答案:

答案 0 :(得分:0)

通过以下查询获取光标的最后一个值(这应该在循环之外)。

SELECT <column_name> INTO @last_value FROM <table_name> WHERE <where_conditions> ORDER BY <order_column> DESC LIMIT 1;

然后,在FETCH之后添加一个IF语句,如下所示:

IF xStatus = @last_value THEN
    SELECT 'Last Loop' AS Status;
END IF;

答案 1 :(得分:0)

您必须设置继续处理程序。

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

有关详细信息,请查看以下链接。

http://dev.mysql.com/doc/refman/5.0/en/cursors.html