ストアドプロシージャ
データベースのお話で出てくるよ
データベースさんに対する命令をまとめたものだよ
戻り値のない関数みたいなものだよ
簡単に書くよ
ストアドプロシージャ(英:stored procedure)とは
データベースの世界におけるプロシージャ
(複数の命令をまとめたもの、戻り値のない関数)のこと。
もう少し具体的に書くと
データベースさんに対する「あれやれ、これやれ」な命令を1つにまとめて保存したもので、戻り値
(プログラムや関数から出てくる値)のないもの
です。
詳しく書くよ
比較しながら説明した方が分かりやすいと思うので、プログラミング関連の説明も一緒に書いていきますね。
多少遠回りに感じるかもしれませんが、のんびりお付き合いください。
プログラムというのはコンピュータさんに対する命令書です。
コンピュータさんに対して「あれしろ、これしろ」という命令が書かれています。
コンピュータさんに対する命令書を作る行為は「プログラミング」と言います。
プログラミングの分野において、何かを入れると何かをして何かを返してくれる部品を「関数(ファンクション:function)」と言います。
「何らかの処理(命令)をまとめたもの」と解釈しても かまいません。
関数へ入れるものは「引数(ヒキスウ)」と言います。
関数から出てくるのは「戻り値」です。
プログラミング言語によっては、戻り値の有無によって関数を区別します。
区別する場合は
・戻り値のある関数:関数(ファンクション)
・戻り値のない関数:プロシージャ
と呼びます。
プロシージャの本来の意味は「複数の処理を1つにまとめたもの」ですけどね。
関数だって複数の処理を1つにまとめたものです。
「戻り値のない関数がプロシージャ」と解釈して かまいません。
ここまでの説明で、プログラミングの分野における「関数(ファンクション)」と「プロシージャ」は、何となく理解できたでしょうか。
あとは、データベースについても説明しておきましょう。
と言っても、難しく考える必要は ありません。
「データを入れておく箱」がデータベースです。
以上を踏まえて
データベースの世界におけるプロシージャ(複数の命令をまとめたもの、戻り値のない関数)
が「ストアドプロシージャ」です。
ついでなので併せて書いておくと「データベースの世界における戻り値のある関数」は「ストアドファンクション」と言います。
ストアドプロシージャとストアドファンクションの違いは、戻り値があるかないかの違い、と解釈してください。
ここで、プログラミングとの比較に戻りましょう。
プログラミング言語は、コンピュータさんに対して命令するときに使う言語です。
プログラミング言語を使って あれやこれやと記述すると、コンピュータさんに対して「あれしろ、これしろ」と命令を出せます。
同じように「SQL」という名前の、データベースさんに対して命令を出すための言語があります。
SQLを使って あれやこれやと記述すると、データベースさんに対して「あれしろ、これしろ」と命令を出せます。
プログラミング言語によって書かれたいくつかな命令を1つにまとめて部品化したものを「関数」と言います。
戻り値のある関数を「関数(ファンクション)」、戻り値のない関数を「プロシージャ」と呼びわける場合も あります。
同じように、SQLによって書かれたいくつかな命令を1つにまとめて部品化したものを「ストアドファンクション」もしくは「ストアドプロシージャ」と言います。
戻り値がある場合は「ストアドファンクション」、戻り値がない場合は「ストアドプロシージャ」として定義するのが一般的です。
多少乱暴な解釈ではあるのですが、プログラミングの分野における「ファンクション(関数)」「プロシージャ(戻り値のない関数)」が、データベースの分野における「ストアドファンクション」「ストアドプロシージャ」と考えると、分かりやすいと思います。
一言でまとめるよ
まぁ「ストアドプロシージャ」って単語が出てきたら「データベース世界における戻り値
(プログラムや関数から出てくる値)のない関数
(処理のまとまり)なんだな~」と お考えください。
おまけ
■訳してみるよ
「stored(ストアド)」は「store(ストア)」+「ed」です。
「store(ストア)」の意味は「お店」とか「蓄え」とか「貯蔵」とか「蓄える」とか「保管する」とか「保存する」とか「格納する」とかです。
「ed」という接尾辞が付くと「~された」的な意味になります。
「procedure(プロシージャ)」の意味は「手順」とか「手続き」とかです。
何となく くっつけると
保存された手順
となります。






