2014-05-06 19 views
0

得到一個「無效使用組功能的」用於計算和存儲過程 - MySQL的5

只是想在一個表格來總結所有的「權重」的列值的值:

BEGIN 

DECLARE v_finished int DEFAULT 0; 
DECLARE v_weight int DEFAULT 0; 
DECLARE totalWeight int DEFAULT 0; 

DECLARE weight_cursor CURSOR FOR 
SELECT weight FROM users_teachers; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = 1; 
OPEN weight_cursor; 

get_weight: LOOP 
FETCH weight_cursor into v_weight; 
IF v_finished = 1 THEN 
     LEAVE get_weight; 
    END IF; 
SET totalWeight = totalWeight + v_weight; 



END LOOP get_weight; 

CLOSE weight_cursor; 

END 

更新:現在的問題是,v_weight總是= 0.也就是說,它不是從DB表中返回值,其中一些是非零

+0

你使用哪個數據庫? – Guneli

+0

@Guneli inno-db,mysql 5 – compguy24

+2

我對inno-db,mysql 5不太瞭解,但我認爲這個「SET totalWeight = SUM(v_weight);」應該是像「SET totalWeight = totalWeight + v_weight;」 – Guneli

回答

1

因此,由於第一個錯誤在SUM函數中。請試試這個:

BEGIN 

DECLARE v_finished INTEGER DEFAULT 0; 
DECLARE v_weight INTEGER DEFAULT 0; 
DECLARE totalWeight INTEGER DEFAULT 0; 

DECLARE weight_cursor CURSOR FOR 
    SELECT weight FROM users_teachers; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = 1; 
OPEN weight_cursor; 

get_weight: 
LOOP 
FETCH weight_cursor into v_weight; 
IF v_finished = 1 THEN 
     LEAVE get_weight; 
END IF; 
SET totalWeight = totalWeight + v_weight; 

END LOOP get_weight; 

CLOSE weight_cursor; 

END 
+0

@ compguy24,請問您,請向我們顯示您的輸入數據? – Guneli