2016-11-23 12 views
0

テーブルからすべての価格を引き続き追加しようとしています。私は試しました n_total_price = n_total_price + d_price;MySQL - ストアドプロシージャ - whileループで最後のレコードを取得する

それは割り当てだ、私は、ストアドプロシージャ

を使用する必要がありますそれはちょうど私の最後のレコードあなただけの製品と `SELECT SUM(PRICE)を使用していないのはなぜ

DELIMITER $$ 
    CREATE PROCEDURE P_TOTAL_PRICES(OUT N_TOTAL_PRICE DECIMAL(30,2)) 
    BEGIN 
     DECLARE D_PRICE DECIMAL(30,2); 
     DECLARE ABC DECIMAL(30,2); 
     DECLARE FOUND BOOLEAN; 
     DECLARE CURSOR_1 CURSOR FOR SELECT PRICE FROM PRODUCT; 
     DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE; 
     SET FOUND = TRUE; 
     OPEN CURSOR_1; 
     FETCH CURSOR_1 INTO ABC; 
     WHILE FOUND DO 
      SET N_TOTAL_PRICE = N_TOTAL_PRICE + D_PRICE; 
      FETCH CURSOR_1 INTO ABC; 
     END WHILE; 
     CLOSE CURSOR_1; 
    END; $$ 
+1

を与えます'? – Barmar

+0

ループの前に 'N_TOTAL_PRICE'を宣言し、' 0'に設定する必要があるかもしれません。それで 'SET N_TOTAL_PRICE = N_TOTAL_PRICE + D_PRICE'が動作するはずです。 – Barmar

+0

@Barmarとして、1行で何ができるかについて20行ほど書いています。 – e4c5

答えて

0
DELIMITER $$ 
CREATE PROCEDURE P_TOTAL_PRICES(OUT N_TOTAL_PRICE DECIMAL(30,2)) 
BEGIN 
DECLARE D_PRICE DECIMAL(30,2); 
DECLARE ABC DECIMAL(30,2); 
DECLARE FOUND BOOLEAN; 
DECLARE CURSOR_1 CURSOR FOR SELECT PRICE FROM PRODUCT; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE; 
SET FOUND = TRUE; 
OPEN CURSOR_1; 
FETCH CURSOR_1 INTO ABC; 
**SET N_TOTAL_PRICE = 0;** 
WHILE FOUND DO SET N_TOTAL_PRICE = N_TOTAL_PRICE +D_PRICE; 
FETCH CURSOR_1 INTO ABC; 
END WHILE; 
CLOSE CURSOR_1; 
END; $$ 
関連する問題