MySQL データセットで for ループを使用するには?
FOR x IN (SELECT column FROM table_name WHERE column_2 = input_val)
LOOP
sum_total := sum_total + x.column ;
END LOOP;
これは、オラクルでデータセットをループするために使用した例です。
これは MySql でどのように達成できますか?
まったくループしないのはどうですか。やっぱりSQLです。
SELECT SUM(`column`) total
FROM table_name
WHERE column_2 = <input_val>
それ以外の場合は使用CURSOR
さて、同等のループ使用CURSOR
は次のようになります
DELIMITER $$
CREATE PROCEDURE sp_loop(IN input_val INT)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE sum_current, sum_total INT DEFAULT 0;
DECLARE cur1 CURSOR FOR SELECT column1 FROM table_name WHERE column2 = input_val;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO sum_current;
IF done THEN
LEAVE read_loop;
END IF;
SET sum_total = sum_total + sum_current;
END LOOP;
CLOSE cur1;
SELECT sum_total;
END$$
DELIMITER ;