2013-05-14 4 views
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; 

내가 루프의 마지막 위치를 알고 싶어요.

+0

마지막 위치는 무엇을 의미합니까? 계속 처리기를 설정하는 위치가 표시되지 않습니다. – NotMe

+0

** 비즈니스 요구 사항은 무엇입니까? ** 현재 질문은 알 수없는 문제에 대한 해결책을 찾기 위해 찾고 있습니다. 우리는 당신에게 좋은 충고를하기 위해 실제 문제를 알아야합니다. –

+0

루프의 마지막 시간까지 프로 시저가 발생할 때의 마지막 위치를 의미합니다. –

답변

0

다음 쿼리를 통해 커서의 마지막 값을 가져옵니다 (루프 외부에 있어야 함).

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

그런 다음, 다음과 같이 IF 문이 후 FETCH 추가

IF xStatus = @last_value THEN 
    SELECT 'Last Loop' AS Status; 
END IF; 
관련 문제