2013-12-11 28 views
1

我有一個命名爲TRY這樣的表....使用光標最後返回的行重複

try(name,sal) values('tony',10000),('david',20000),('rony',30000),('sami',40000) 

現在我使用光標在過程中表現出的薪水列的通過所有值變量。做到這一點我試圖弄清楚鋤頭光標的作用,因爲我是新來的光標,我已經知道光標一個一個地提取每一個選定的行。我正在做下面的代碼...

delimiter ;; 

create procedure me() 

    begin 

    declare done int default 0; 

    declare var int; 

    declare cur cursor for select sal from try; 

    declare continue handler for not found set done=1; 

    open cur; 

    curloop:loop 

    if done=1 then 

    leave curloop; 

    end if; 

     fetch cur into var; 

     select var; 

    end loop; 

close cur; 

end;; 

使用此我正確地獲取SAL列的所有值,但問題是它返回一個額外的行這是SAL列的最後一個值的重複,即,我得到了重複的最後一個值。

請解決我的問題。提前感謝。

回答

4

您需要更改的功能一點,檢查done就去拿手術後 -

CREATE PROCEDURE me() 
BEGIN 
    DECLARE done int DEFAULT 0; 
    DECLARE var int; 
    DECLARE cur CURSOR FOR SELECT sal FROM try; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 

    OPEN cur; 

curloop: 
    LOOP 

    FETCH cur INTO var; 
    IF done THEN 
     LEAVE curloop; 
    END IF; 

    SELECT var; 

    END LOOP; 

    CLOSE cur; 
END 
+0

感謝,它的工作。 –