ストアドプロシージャ 【stored procedure】 ストアードプロシージャ

概要

ストアドプロシージャ(stored procedure)とは、データベース管理システム(DBMS)の機能の一つで、データベースに対する連続した複数の処理を一つのプログラムにまとめ、データと共に保存できるようにしたもの。処理はDBMS側でわれ、外部からはクエリを発行するのと同じ手順で実行できる。

SQL文や専用の言語を組み合わせて処理手順を記述しDBMSに保存すると、すぐに実行可能な形式に変換されて外部から呼び出し可能な状態になる。複数のSQL文を組み合わせた複雑な処理を記述でき、一度の呼び出しでまとめて実行することができる。条件分岐ループなどの制御構文、変数例外処理など一般のコンピュータプログラムと変わらない高度な機能を利用できる場合もある。

外部のプログラムからSQL文を発行してデータを受け取り処理する場合に比べ、すでにSQL文構文解析などが済んだ状態で保存されているため高速に実行することができ、また、DBMSから呼び出し側へSQL文の実行結果を受け渡すのにかかる時間や帯域幅も節約できる。

また、ストアドプロシージャの保存も実行DBMS自体の機能であるため、呼び出し側のシステムプログラミング言語などの種類や環境に依らず同じように利用できる。SQLによる操作をストアドプロシージャ側にまとめることで、呼び出し側プログラムソースコードからSQL文を排除して読みやすさや保守性を向上させることも可能である。

処理の記述に用いられる言語は、SQLの標準規格であるSQL99から定義された「SQL/PSM」(Persistent Stored Module)という標準が一応は存在するが、Oracle Databaseの「PL/SQL」やMicrosoft SQL Serverの「Transact-SQL」など各DBMS独自の言語を用いるのが一般的で、互換性は低いのが現状である。

また、汎用プログラミング言語に比べ機能や拡張性開発ツールなどの環境は劣るため、過度に処理内容をストアドプロシージャ側に寄せようとすることで却ってシステム全体の生産性や保守性を下げてしまう場合もある。

ストアドファンクション (stored function)

データベースに対する連続した複数の処理を関数function)の形でまとめ、必要に応じて呼び出せるようにしたものを「ストアドファンクション」という。基本的な仕組みはストアドプロシージャと同じで、SQL文プログラミング言語を組み合わせて処理を記述し、一括して実行できるようデータベース内に保存しておく。

ストアドプロシージャとの違いは呼び出し側への返り値の有無で、ストアドファンクションは関数であるため実行結果を何らかのとして返却する。利用できる機能などに違いは無いことが多いが、入力値の変換や判定などに用いられることが多く、UPDATE文DELETE文などでデータベースの内容を変更する操作はわないことが多い。

(2020.7.31更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる