MySQLでストアドプロシージャの作成

MySQLのストアドプロシージャを作成してみます。
とはいってもまだ入門はしません。
今勉強している本がストアドプロシージャを使うので
触りだけ勉強します。
SQLは追々勉強します。


<ストアドプロシージャとは>
一連の処理をプログラムとしてまとめてDB内に保存しておくもの。
条件分岐や複数のSELECT文の実行、引数をとって処理したり、値を返したりできるもの。
(・・・だとおもっています。)


<所感>
RDBMSによって記述方が異なっているため、全て覚えて使いこなすのはなかなか困難だと思いました。


<ストアドプロシージャの作成>
ストアドプロシージャは以下のように作成する。

create procedure プロシージャ名()
select文;


<ストアドプロシージャの呼び出し>
ストアドプロシージャは以下のように呼び出す。

call 作成したプロシージャ名;


<複数のSELECT文を実行するストアドプロシージャ>
複数のSELECT文を一気に実行するストアドプロシージャを作成します。

delimiter //
create procedure test2()
begin
select * from テーブル1;
select now();
select * from テーブル2;
end;
//

delimiter ;


delimiterを使用しているところが大切です。
delimiterではじまりdelimiterを終了しないといつまでたっておわりません。
しかもdamePGの場合はdelimiterの後ろに空白を入れなかったので
ずっとdelimiterの状態になり困ってしまいました。
呼び出し方は先ほどと同じくcallで呼び出します。


<引数をとるストアドプロシージャ>
次は引数をとってみます。

delimiter //
create procedure test3(in <変数名> <データ型>)
begin
select * from テーブル名 where カラム名 = 変数名;
end;
//

delimiter ;


<引数をとるストアドプロシージャに値を入れてみる>
先ほど作ったプロシージャに値を入れて呼び出してみます。

call test3(値)


・・・・と今回はこんな感じです。
今PrepareStatementの勉強をしています。
そこでストアドプロシージャについて書いてあったので
ついでにアップしてみました。


ひとしきりJavaが終わった後にSQLのチューニングや
ストアドプログラムを勉強したいと思います。


熱帯魚の水槽をきれいにしただけで、俄然やる気の出るdamePGでした。