ストアド プロシージャの実行

ストアド プロシージャは、データベースに保存される実行可能なオブジェクトです。SQL Server では次に示すオブジェクトをサポートしています。

  • ストアド プロシージャ :

    1 つの実行可能なプロシージャとしてプリコンパイルされた 1 つ以上の SQL ステートメント。

  • 拡張ストアド プロシージャ :

    拡張ストアド プロシージャ用の SQL Server オープン データ サービス API に記述された、C または C++ のダイナミック リンク ライブラリ (DLL)。オープン データ サービス API によりストアド プロシージャの機能が拡張され、C または C++ のコードを実装できるようになります。

ステートメントの実行時、データ ソースに対して (クライアント アプリケーション内でステートメントを直接実行または準備せずに) ストアド プロシージャを呼び出すと、次のような利点があります。

  • パフォーマンスの向上

    SQL ステートメントは、プロシージャが作成される時点で、解析およびコンパイルされます。プロシージャの実行時には、これらの作業は必要ありません。

  • ネットワーク オーバーヘッドの軽減

    複雑なクエリをネットワーク経由で送信するのではなく、プロシージャを実行することで、ネットワーク トラフィックを削減できます。ODBC アプリケーションが ODBC { CALL } 構文を使用してストアド プロシージャを実行すると、ODBC ドライバーがさらに最適化を行い、パラメーター データの変換が不要になります。

  • 一貫性の向上

    組織の規則がストアド プロシージャなどの 1 つのリソースに集約して実装されると、コーディング、テスト、デバッグを一度で行えます。各プログラマが独自の実装を開発するのではなく、テスト済みの共通のストアド プロシージャを使用できます。

  • 精度の向上

    通常、ストアド プロシージャは経験を積んだプログラマが開発するので、技術レベルの異なるプログラマが繰り返し手を加えたコードに比べて、効率的でエラーが少なくなる傾向があります。

  • 機能の追加

    拡張ストアド プロシージャは、Transact-SQL ステートメントでは使用できない C や C++ の機能を使用できます。

    ストアド プロシージャを呼び出す方法の例については、CodePlex から入手できる、リターン コードと出力パラメーターを処理するサンプルを参照してください。詳細については、「SQL Server データベース エンジン サンプル」を参照してください。