2013-04-26 35 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 2013-04-26 09:59:45

+0

MySQL遊標不可滾動,因此您只能繼續前進。替代方法是,嘗試用JOINS替換您的兩個嵌套遊標,但我不確定是否可行或不查找兩個遊標的查詢 – Amit 2013-04-29 06:22:19

+0

爲了避免直接連接到表上,我使用了遊標。因爲有一天數據量很大,我認爲在光標中一次採集整個數據比在多次內部排序並且花費更多的連接和組中很容易。謝謝你 – AmbrishK 2013-04-29 09:43:58

相關問題