使用する可能性が出てきたので、概要と使い方のメモ。
ストアドプロシージャとは何か?
ストアドプロシージャ (stored procedure) とは、データベースに対する一連の処理をまとめた手続きにして、関係データベース管理システム (RDBMS) に保存(永続化)したもの。永続格納モジュール (Persistent Storage Module) とも呼ばれる。ストアドプロシージャの格納先はRDBMSの実装により異なり、RDBMSのデータ辞書や専用の格納スペースが用いられている。
メリットとデメリット
個人的な理解はこんな感じ。
メリット
・ひとつの要求で複数処理をこなせるため、ネットワーク負荷が軽くなる。
・コンパイルが済まされているため処理速度はあがる。
・ホスト言語と分離しているから、サイトを運用中でもストアドだけ入れ替えて修正することもでき、保守しやすい。
デメリット
・DBごとに互換性がないからコードの再利用がしにくい。
・業務に仕様変更があった場合に、ストアドプロシージャも変更しなくてはならないから工数や障害のリスクが増える可能性がある。
・サーバー側にストアドが保存されるため、ストアドをむやみに増やすと負荷が高まる 。
便利だが、なんでもかんでもストアドに書くのは避けて使うべきということか。
実際の処理はどう書くのか?
定義や実行方法についてわかりやすい記事でした。基本的な使い方がわかります。
知らない単語のメモ
・カーソル
一括してSQLの処理をかけずに一行ずつ条件を判断して処理を行う際に使うもの。SELECT文の実行結果(結果セット)を仮想的な作業領域として扱い、カーソルはこの作業領域に対してループ処理を実行し、1行ずつデータを取り出し処理を行う。また、現在の処理行を表すポインタという概念もある。