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でした。