MySQLでカーソルを使って1行ずつ処理したい
- MySQL
-
2024-01-30
この記事は最終更新日から1年以上経過しています。
ストアドプロシージャで1行ずつデータを処理したいときはカーソルを使って処理します。
以下、簡単な例をご紹介します。
-- 読み出した値を格納する変数を宣言
DECLARE currentId INT;
DECLARE currentColumnA VARCHAR(255);
DECLARE currentColumnB VARCHAR(255);
-- カーソルが最終行に達した判定するフラグ
DECLARE done INT DEFAULT FALSE;
-- カーソルを定義
DECLARE myCursor CURSOR FOR
SELECT id, columna, columnb FROM example;
-- カーソルが最終行に達したときの動作を制御
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
-- カーソルを開く
OPEN myCursor;
-- ループで1行ずつ処理
read_loop: LOOP
-- カーソルから1行読み出し
FETCH myCursor INTO currentId, currentColumnA, currentColumnB;
-- カーソルからの読み出しが最後に達していればループを抜ける
IF done THEN
LEAVE read_loop;
END IF;
-- 読み出したデータを使用した処理等を書く
END LOOP;
-- カーソルを閉じる
CLOSE myCursor;
この記事がお役に立ちましたらシェアお願いします
854 views




