【すとあどぷろしーじゃ】
ストアドプロシージャ とは?
最終更新:
💡 DBに置いた処理手順を、名前で呼び出す
データベース側に定義して、名前で呼び出せる処理手順。SQLなどをまとめて再利用し、複数の処理をDB側で行える。書き方・権限・実行計画の扱いは製品によって異なる。
📌 このページのポイント
アプリでSQLを書くのと、何が違う?
処理の手順をDB側に置いて、アプリなどから名前で呼び出せるんだ。例えば注文処理の複数の操作をまとめ、入力値を渡して実行する。SQL ServerはT-SQLなど、PostgreSQLはSQLやPL/pgSQLなどで定義できるよ。
保存すれば、必ず速くなる?
使うだけで、データを安全にできる?
呼び出しを許可し、テーブルを直接触る権限を制限する設計はできるよ。ただし製品・設定による。例えばPostgreSQLは、標準では呼び出し元の権限で実行し、定義者の権限で動かす方式もある。プロシージャを作るだけで、権限が安全に整うわけではないんだ。
関数やトリガーと同じもの?
別の呼び出し方や役割があるよ。PostgreSQLでは関数をクエリ内で使い、プロシージャはCALLで単独に呼び出す。処理をDB側に置くときは、DB固有の書き方、変更手順、テストも一緒に管理しよう。名前の似た仕組みを全製品で同じと考えないでね。
まとめ:ざっくりこれだけ覚えればOK!
「ストアドプロシージャ」って出てきたら「DB側に保存し、名前で呼び出す処理手順」と思えばだいたいOK!
📖 おまけ:英語の意味
「Stored Procedure」 = 格納された手続き
💬 Stored(保存された)Procedure(手続き)。DBサーバー内に処理を保存しておくよ