Stored Procedure
ストアドプロシージャはデータベースに格納されたプリコンパイル済み SQL プログラムで、必要に応じて呼び出せ、ネットワーク往復と SQL インジェクションのリスクを減らす。
目的
ビジネスロジックをデータベースに押し下げ、ネットワーク往復と繰り返しの解析を減らす。
メカニズム
SQL/PL(PL/pgSQL、T-SQL)で書かれ、実行計画をキャッシュしてプリコンパイルされる。パラメータを受け取り、結果セットや影響行数を返す。データベース内で実行されて往復を減らし、権限を制御できる。ただしデバッグやバージョン管理、データベースからの分離が難しい。
ユースケース
- 複雑なビジネスロジックのカプセル化
- バッチデータ処理
- 権限分離されたデータベース操作
- レガシーシステムのロジック
例
- 入力
CALL transfer(account_a, account_b, 100)OutputStored procedure invokedPrecompiled
よくあるエラー
- Over-pushing business logic down hurts maintainability
- Keep core logic in the app; use procedures only for data-intensive operations