Home > 技術 > MySQLのストアドプロシージャでループしてみた

MySQLのストアドプロシージャでループしてみた

OracleのPL/SQLでストアドプロシージャを書いたことはあったのですが、MySQLでの文法が分からなかったので簡単なSQLを書いてみた。

内容は大量にデータを作りたい場合に有効なInsertのループとそれを削除するためのDeleteのループです。

Insert文をループするストアドプロシージャ

create procedure insertEmp()
reads sql data
modifies sql data
begin
  declare counter int;
  set counter = 0;
  while counter < 100 do
    insert into
		EMPLOYEE
	(
		EMPLOYEE_ID
	)
    values
	(
		counter
	);
    set counter = counter + 1;
  end while;
end


Delete文をループするストアドプロシージャ

create procedure deleteEmp()
reads sql data
modifies sql data
begin
  declare counter int;
  set counter = 0;
  while counter < 100 do
    delete from
		EMPLOYEE
	where
		EMPLOYEE_ID = counter;
    set counter = counter + 1;
  end while;
end

続きでPL/SQLで書いた場合のSQLを載せておきます。
結構文法が違うんですよね。う~~ん。
あんまりストアドプロシージャを作る機会がなかったので、チャンスがあれば勉強していこうと思います。

またNavicatというMySQL用のツールでGUIからストアドプロシージャを作ろうとしたのですが、以下のエラーが出て作成できなかったので、CUI上で作成したらうまくいきました。

MySQL Error

あんまりネットで調べてみても解決策がなかったです・・・
ストアドプロシージャ作成時のエラーについて -OKWave

■関連リンク
@IT:エンタープライズ市場に向かうMySQL 5.0[後編](1/3)

PL/SQLでInsert文をループするストアドプロシージャ

CREATE PROCEDURE INSERT_JOB
IS
  Counter INTEGER;
BEGIN
  Counter := 0;
  WHILE Counter < 100 LOOP
    INSERT INTO
		EMPLOYEE
	(
		EMPLOYEE_ID
	)
    VALUES
	(
		Counter
	);
    Counter := Counter + 1;
  END LOOP;
END;

PL/SQLでDelete文をループするストアドプロシージャ

CREATE PROCEDURE DELETE_JOB
IS
  Counter INTEGER;
BEGIN
  Counter := 0;
  WHILE Counter < 100 LOOP
    DELETE FROM
		EMPLOYEE
	WHERE
		EMPLOYEE_ID = Counter;
    Counter := Counter + 1;
  END LOOP;
END;

Trackback:0

TrackBack URL for this entry
http://hisasann.com/cgi-bin/mt/mt-tb.cgi/978
Listed below are links to weblogs that reference
MySQLのストアドプロシージャでループしてみた from HouseTect, JavaScriptな情報をあなたに

Home > 技術 > MySQLのストアドプロシージャでループしてみた

Tag cloud
月別アーカイブ
Powered by
Powered by
Movable Type Commercial 4.261

Page Top