IT用語

ストアドプロシージャとは?初心者向けに画像多めで解説!

クマノくらげ

この記事では、ストアドプロシージャについて、初心者向けに画像多めで解説します。

この記事でわかること
・ストアドプロシージャとは何か
・なぜ処理をまとめておくのか
・ハンバーガー屋さんで例えるとどういうことか
・メリットと注意点

ストアドプロシージャとは?

ストアドプロシージャを一言でいうと、
「よく使うSQL処理を、Aセットのようにまとめて登録しておく仕組み」です。

よく使うSQL処理?

うん。たとえば、データベースに対して毎回同じような作業をすることが多いんだ。
「データを検索して、条件に合うものを更新して、結果を返す」みたいな処理。

そうなの?

そうなんだよ。そこで、その一連の処理をあらかじめデータベースに保存しておくんだ。
そして必要なときに、名前を呼び出すだけで実行できるようにする。
これがストアドプロシージャだよ。

データベースはいじったことないからよくわからないけど、よく使う処理をまとめておくんだね。

たとえ:ハンバーガー屋さんでの注文

ハンバーガー屋さんで考えてみようか。
毎回、店員さんにこう伝えるのは面倒だよね。
「ハンバーガーください」
「ポテトください」
「ドリンクください」

あぁこの注文がデータベースでいうところの毎回同じような処理なんだね。

そうだよ。この注文をセット化して、
「Aセットください」というだけで、以下3つの処理が行われるんだ。
「ハンバーガーください」
「ポテトください」
「ドリンクください」

こんな感じでストアドプロシージャも、複数のSQL処理をまとめておき、名前を呼び出すだけで実行できるんだ。

データベースとの対応表も置いておくね。

身近な例えデータベース
Aセットストアドプロシージャ名
ハンバーガー・ポテト・ドリンク複数のSQL処理
「Aセットください」ストアドプロシージャを実行する
セット内容を厨房側で決めておく処理内容をDB側に保存しておく

ストアドプロシージャの基本的な流れ

ストアドプロシージャの基本的な流れはこうだね。
① よく使う処理を決める
② その処理をデータベースに保存する
③ 名前を付ける
④ 必要なときに名前で呼び出す
⑤ まとめた処理が実行される

登録しておけば、名前を呼び出すだけで同じ動作をしてくれるんだね。

ストアドプロシージャのメリット

ストアドプロシージャのメリットをまとめておこうか。

① 同じ処理を何度も書かなくてよい

毎回同じSQLを書く必要がなくなります。

同じ処理をまとめておけば、呼び出すだけで使えます。

② 処理をまとめて管理しやすい

処理内容をデータベース側にまとめておけるので、
同じ処理をいろいろなアプリから使いやすくなります。

③ 複雑な処理をシンプルに呼び出せる

アプリ側から見ると、

注文処理を実行する

だけで済みます。

裏側で複数のSQLが動いていても、呼び出す側はシンプルになります。

④ 処理のミスを減らしやすい

毎回手作業でSQLを書くと、書き間違いが起きる可能性があります。

ストアドプロシージャとしてまとめておけば、同じ処理を安定して実行しやすくなります。

ストアドプロシージャのデメリット・注意点

デメリットもあるの?命令をまとめて置けるなら便利そうなんだけど。

基本的には便利なんだけどね。「ぱっと見」でわかりにくいんだ。

① 中身が見えにくくなることがある

呼び出す側から見ると、

注文処理

という名前だけに見えるため、
中で何をしているのか分かりにくくなることがあります。

② データベースに処理が寄りすぎることがある

本来アプリ側で管理した方がよい処理まで、データベース側に入れすぎると、全体の設計が複雑になることがあります。

③ データベース製品によって書き方が違う

Oracle、SQL Server、MySQL、PostgreSQLなどで、ストアドプロシージャの書き方や機能に違いがあります。

そのため、別のデータベースへ移行するときに修正が必要になることがあります。

「Aセット」だけでは、何が入っているかわからないし、
お店によって中身が違うもんね。

よく行くお店なら、「Aセット」だけで十分なんだけどね。
違うお店に行くと「Aセット」の中身がわからないよね。

同じように、データベースの製品によって、違ったりするんだ。

ストアドプロシージャはどんな場面で使うの?

実際にはどんなときに使われているの?

ストアドプロシージャは、たとえば次のような場面で使われるよ。

・毎月の売上を集計する処理
・注文データを登録して、在庫も減らす処理
・ユーザー情報を確認して、必要なデータを返す処理
・複数のテーブルをまとめて更新する処理

つまり、1回の作業に見えて、裏側では複数のSQLが動くような場面で使われることがあるんだね。

まとめ

ストアドプロシージャとは、データベースに保存しておく処理のまとまりです。

よく使うSQL処理をあらかじめまとめておき、名前を付けて呼び出せるようにします。

ポイントは次の通りです。

– ストアドプロシージャは、データベース側に保存する処理のまとまり
– よく使うSQLをセット化できる
– 複雑な処理を名前で呼び出せる
– 同じ処理を何度も書かなくてよい
– ただし、中身が見えにくくなったり、DB依存が強くなったりする点には注意が必要

一言でまとめるなら、ストアドプロシージャとは「SQLの定番処理をセットメニューのように登録しておく仕組み」です。

ABOUT ME
クマノくらげ
クマノくらげ
難しいIT用語やビジネス用語を、できるだけ身近な例えで解説するブログです。 「専門用語を見ると眠くなる人」でも読めるように、画像や会話形式を多めにしています。 AWS12冠達成済み。
記事URLをコピーしました