2012-12-13 62 views
0

我想創建一個循環裏面的過程,但是當我打電話時它只顯示第一個記錄,不要interate。MYSQL循環只顯示第一個記錄

delimiter // 
create procedure load_foo_test_data() 
begin 

declare v_max int unsigned default 10; 
declare v_counter int unsigned default 1; 

select COUNT(*) into v_max FROM emp; 

start transaction; 
while v_counter < v_max do 
    select * from emp where emp_id = v_counter; 
    set v_counter=v_counter+1; 
end while; 
commit; 
end 
// 
delimiter ; 

當我打電話的過程中,它顯示我只是第一個記錄(ID爲1)。

我試過「select v_counter」,只顯示1。

並嘗試與循環,而不是同一件事情。

我正在使用mysql中的續集親5.5

謝謝!

+0

爲什麼環路通過 '開始交易/提交' 包圍?不涉及你的錯誤(可能不是),但看起來很奇怪。 – ethrbunny

+0

事實是,我只用循環(而不是交易/提交)和我有同樣的問題。尋找一個解決方案,我發現這個例子(原來有「插入」而不是「選擇」),但不解決第一個記錄的問題。 – Vertig0

+0

如果您手動執行多個選擇,您是否可以編程處理所有結果集?你爲什麼要做多個選擇而不是一個? –

回答

-1

我認爲你應該使用

while () { 

    // do this 

} 
+0

您的意思是「{}」?,但這對SQL不起作用。 – Vertig0

-1

嘗試使用

SET v_counter = 0;  
REPEAT 
IF v_counter < v_max do THEN 
    select * from emp where emp_id = v_counter; 
    set v_counter=v_counter+1; 
END IF; 
UNTIL v_counter END REPEAT;