- 2008-04-17 (木)
- 技術
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上で作成したらうまくいきました。

あんまりネットで調べてみても解決策がなかったです・・・
ストアドプロシージャ作成時のエラーについて -OKWave
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;
【関連する記事】
- MacでMySQLを使うときはmysqlにPathを通そう
- Mac OS X LeopardでRailsとMySQL連携で文字化けする場合の対処
- Mac OS X LeopardでRailsで遊べる環境を構築するまで
Comments:0
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, JavaScripter Blog

