Share via


ストアド プロシージャの種類

Microsoft SQL Server では、さまざまな種類のストアド プロシージャを使用できます。このトピックでは、ストアド プロシージャの種類について、例を交えて概要を説明します。

ユーザー定義ストアド プロシージャ

ストアド プロシージャは、コードを再利用するためにカプセル化したモジュールやルーチンです。入力パラメータを受け取ること、表形式かスカラ値の結果とメッセージをクライアントに返すこと、DDL (データ定義言語) ステートメントおよび DML (データ操作言語) ステートメントを呼び出すこと、出力パラメータを返すことができます。SQL Server 2008 には、Transact-SQL と CLR という 2 種類のストアド プロシージャがあります。

Transact-SQL

Transact-SQL ストアド プロシージャは、Transact-SQL ステートメントをまとめて、ユーザーが指定したパラメータを受け取ったり返したりできるようにして保存したものです。たとえば、クライアント アプリケーションから渡された情報に基づき 1 つ以上のテーブルに新しい行を挿入するために必要なステートメントを集めてストアド プロシージャを構成できます。また、ストアド プロシージャを使用して、データベースからクライアント アプリケーションにデータを返すことができます。たとえば、電子商取引 Web アプリケーションで、オンライン ユーザーが指定した検索条件を基に特定の商品についての情報を返すストアド プロシージャを使用できます。

CLR

CLR ストアド プロシージャは、ユーザーが入力したパラメータを取得したり返したりできる Microsoft .NET Framework の CLR (共通言語ランタイム) メソッドへの参照です。.NET Framework アセンブリのクラスの静的パブリック メソッドとして実装されます。詳細については、「CLR ストアド プロシージャ」を参照してください。

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

重要な注意事項重要

この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに、「CLR (共通言語ランタイム) 統合の概要」を使用してください。

拡張ストアド プロシージャを使用すると、C などのプログラミング言語で独自の外部ルーチンを作成できます。拡張ストアド プロシージャは DLL なので、Microsoft SQL Server インスタンスで動的に読み込んで実行できます。拡張ストアド プロシージャは、SQL Server インスタンスのアドレス空間で直接実行され、SQL Server 拡張ストアド プロシージャ API を使用してプログラミングされます。

注意

CLR 統合では、拡張ストアド プロシージャの記述に代わる、より堅牢でセキュリティ保護された手段が提供されます。

システム ストアド プロシージャ

SQL Server の管理作業の多くは、システム ストアド プロシージャと呼ばれる特殊なプロシージャにより実行されます。たとえば、sys.sp_changedbowner はシステム ストアド プロシージャの 1 つです。システム ストアド プロシージャは Resource データベースが物理的な保存場所で、sp_ というプレフィックスが付きます。論理的には、すべてのシステム定義データベースおよびユーザー定義データベースの sys スキーマに現れます。SQL Server 2008 では、システム ストアド プロシージャに GRANT 権限、DENY 権限、および REVOKE 権限を適用できます。すべてのシステム ストアド プロシージャの一覧については、「システム ストアド プロシージャ (Transact-SQL)」を参照してください。

SQL Server では、SQL Server から外部プログラムへの、さまざまなメンテナンス作業に使用するためのインターフェイスになるシステム ストアド プロシージャがサポートされます。そのような拡張ストアド プロシージャには xp_ プレフィックスが付きます。すべての拡張ストアド プロシージャの一覧については、「汎用拡張ストアド プロシージャ (Transact-SQL)」を参照してください。