MySQL ストアドプロシージャー カーソル

骨だけで使ってません。カーソルのテーブルを適時変更してもらえば、コピペして使えます。


CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_loopupdt_shporder_deliv`(
	IN `ivtrydt` DATE,
	IN `sessionid` VARCHAR(70)
)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT '出庫指図在庫引き当て履歴更新店別明細(これは不要なので処理は空 テンプレート用)'
BEGIN	

/* 変数宣言 */
DECLARE noskid INT;
DECLARE noskcdgoods VARCHAR(20);
DECLARE noskcddeliv VARCHAR(8);
DECLARE noskqty INT;

/* カーソル継続判断フラグ */
DECLARE done INT DEFAULT 0;

/* カーソル定義 */
DECLARE nosk CURSOR FOR
SELECT
  ID, CD_GOODS, CD_DELIV, QTY
FROM
	h_shporder
WHERE
  DT_IVTRY = ivtrydt;	

/* 走査継続判断用 */
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN nosk;

delete from tst where 1 = 1;

REPEAT
	
	/* 変数に格納 */
	FETCH nosk INTO noskid, noskcdgoods, noskcddeliv, noskqty;
	
	/* ここにやりたい処理を入れるとよい */
	/* MySQLではストアドのデバッグは出来ないので、デバッグは一時テーブルとかで行う */
		

UNTIL done END REPEAT;
CLOSE nosk;   /* カーソルのクローズ */

END

MySQL IDEのおすすめ

何使ってもよく、好みに左右されると思いますが、

HeidiSQL  と MySQL WorkBench をお勧めします。

HeidiSQLの便利なところ

  1. テーブル定義で列のコピーペーストが出来て、他のテーブルで使える
  2. インデックス設定の列追加で、ドラッグドロップが使える
  3. 履歴が使いやすく、他に保存する必要なくなる

HeidiSQLの不便なところ

  1. ビューが1行で表示されてしまう

MySQL WorkBenchの便利なところ

  1. EXPLAINがビジュアル

  1. ビューが整形されて表示される

MySQL WorkBenchの不便なところ

  1. 日本語化されてない