コンテンツへスキップ
uencoder

Stored Procedure

ストアドプロシージャはデータベースに格納されたプリコンパイル済み SQL プログラムで、必要に応じて呼び出せ、ネットワーク往復と SQL インジェクションのリスクを減らす。

目的

ビジネスロジックをデータベースに押し下げ、ネットワーク往復と繰り返しの解析を減らす。

メカニズム

SQL/PL(PL/pgSQL、T-SQL)で書かれ、実行計画をキャッシュしてプリコンパイルされる。パラメータを受け取り、結果セットや影響行数を返す。データベース内で実行されて往復を減らし、権限を制御できる。ただしデバッグやバージョン管理、データベースからの分離が難しい。

ユースケース

  • 複雑なビジネスロジックのカプセル化
  • バッチデータ処理
  • 権限分離されたデータベース操作
  • レガシーシステムのロジック

例

  • 入力
    CALL transfer(account_a, account_b, 100)
    Output
    Stored procedure invoked

    Precompiled

よくあるエラー

Over-pushing business logic down hurts maintainability
Keep core logic in the app; use procedures only for data-intensive operations

関連用語

References