2013-04-26 2 views
1

mysql에 2 개의 커서가 있고, 두 번째 커서는 다시 열지 않고 첫 번째 커서 반복마다 실행해야합니다. 어떤 생각? 미리 감사드립니다. 예 : -다시 열지 않고 단일 커서를 여러 번 사용할 수 있습니까?

DECLARE email_not_found INT DEFAULT 0; 
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET email_not_found = 1; 
open cur1; 
open cur2; 

REPEAT 
FETCH cur1 INTO s1; 

REPEAT 
    FETCH cur2 INTO s2; 

    if s1=s2 
     do something. 

UNTIL email_not_found=1 END REPEAT; 

UNTIL email_not_found=1 END REPEAT; 
close cur1; 
close cur2; 

답변

1

매번 커서를 열어야합니다. MySQL 커서 문서에 따르면 커서는 읽기 전용이며 스크롤 할 수 없습니다. 한 방향으로 만 이동하고 행을 건너 뛸 수 없습니다.

이러한 이유로 인해 다시 감기 수 없으며 루프에서 커서를 열어야합니다.

+0

커서의 데이터가 거대하기 때문에 몇 시간을 열지 않고 여러 번 사용하고 싶습니다. 커서가 끝나면 커서를 처음으로 다시 설정할 수 있습니까? – AmbrishK

+0

MySQL 커서는 스크롤 할 수 없으므로 커서 만 앞으로 이동할 수 있습니다. 다른 방법은 두 개의 중첩 커서를 JOINS로 바꾸려고 시도하지만 두 커서에 대한 쿼리를 조사하지 않고 실행 여부를 확인할 수 없습니다. – Amit

+0

커서를 사용하여 테이블에 직접 조인되는 것을 방지하려면 다음을 수행하십시오. 하루 동안 데이터의 lakhs가 있기 때문에 나는 많은 시간을 내부적으로 정렬하고 더 많은 비용이 드는 조인과 그룹보다 커서에서 한 번에 전체 데이터를 가져 오는 것이 쉽다고 생각했습니다. 감사합니다 – AmbrishK

관련 문제