3

我在一个过程中使用以下 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;

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

4

2 回答 2

0

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

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

有关更多信息,请查看以下链接。

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

于 2013-09-20T05:38:15.830 回答
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;
于 2013-09-20T05:22:16.873 回答