【SQL基礎】ストアドルーチンとは
本項からはストアドルーチンについて説明をしていきます。
ストアドルーチンとは
ストアドルーチンとは、あらかじめ一連の処理を定義しておいて、いつでも呼び出して使用できるようにしたものです。
単純なSQL文のみならず、IF文などの条件分岐やループ処理、変数定義なども使用することができるので、複雑な処理を記述することが可能です。
CやJAVAなどのプログラム言語でいうところの、いわゆる関数のようなものになります。
繰り返し何度も同じ処理を実行するような場合などに使用すると役立ちます。
また、ストアドルーチンは、事前にコンパイルされている状態のため、普通にSQL文を投げるより処理速度が速くなります。
そのほかにも、DBサーバ上で一連の処理を実行してから結果をのみを返すため、クライアントから一連の処理を随時やり取りしながら処理するよりもネットワーク負荷が軽減されます。
注意点としては、クライアント側やネットワークの負荷は軽減されますが、その代わりDBサーバの負荷が増大する点です。
ストアドプロシージャとストアドファンクション
ストアドルーチンには、ストアドプロシージャとストアドファンクションの二種類があります。
二つの違いはいくつかありますが、一つは戻り値の有無です。
ストアドプロシージャは戻り値がなく、ストアドファンクションのほうは戻り値があります。
また、デフォルトの設定では無効になっていますが、MySQLではストアドプロシージャは再帰的に定義が可能です。
たいして、ストアドファンクションでは再帰的な定義はできません。
ストアドプロシージャとストアドファンクションの定義の仕方などは次項から解説していきます。
今回の学習ポイント
・ストアドルーチンは、通常のSQL文では使用できないような複雑な処理を記述可能
・ストアドルーチンには、ストアドプロシージャとストアドファンクションの二種類がある
・実行速度やネットワーク負荷軽減には有利だが、DBサーバの負荷が増大する。
練習問題
1.次のうちストアドルーチンの説明としてあっているものはどれか。
A)ストアドファンクションは再帰定義可能である。
B)ストアドルーチンはDBサーバの負荷が増大する。
C)ストアドプロシージャとストアドファンクションはどちらも戻り値が返ってくる。
D)ストアドルーチンは、単純SQL文のみ定義可能。