Share via


方法 : ストアド プロシージャおよびユーザー定義関数を作成する

サーバー エクスプローラーを使用すると、ストアド プロシージャを作成できます。ストアド プロシージャでは、複雑なビジネス ルールの定義、データ変更の制御、セキュリティ設定によるアクセス制限、およびトランザクションの整合性の提供を行えます。また、通常は、アプリケーションで必要なデータベース処理も行います。

Microsoft SQL Server 2000 以降を使用する場合は、サーバー エクスプローラーでユーザー定義関数も作成できます。ユーザー定義関数は、有効なロジックをほかのクエリで使用できるようにカプセル化するルーチンです。ビューが 1 つの SELECT ステートメントに限定されているのに対して、ユーザー定義関数では複数の SELECT ステートメントを指定できるため、ビューよりも強力なロジックを作成できます。

ユーザー定義関数は、必ず値を返します。ユーザー定義関数は、返す値の種類によって、次の 3 つのカテゴリのいずれかに分類できます。

  • [スカラー値関数] Aのユーザー定義関数は、整数やタイムスタンプなどのスカラー値を返すことができます。スカラー値を返す関数は、列名を使用するどの箇所でもクエリに使用できます。

  • ユーザー定義関数にSELECTステートメントが一つ含まれていて、そのステートメントが更新可能な場合**[インライン関数]** は、関数が返す表形式の結果も更新できます。このような関数をインライン関数といいます。テーブルを返すインライン関数は、ほかのクエリの FROM 句で使用できます。詳細については、「方法 : テーブル以外のアイテムを使用してクエリを作成する」を参照してください。

  • ユーザー定義関数に複数のSELECTステートメントがある場合**[テーブル値関数]** は、更新できないSELECTステートメントが含まれている場合、その関数が返す表形式の結果は更新できません。テーブルを返すテーブル値関数は、ほかのクエリの FROM 句で使用できます。

[!メモ]

次の例の dbo は、データベースのオーナー (database owner) を表し、ストアド プロシージャ名およびユーザー定義関数名を修飾するために使用します。dbo は、データベースのすべてのアクティビティを実行できる暗黙的な権限を持つユーザーです。sysadmin のロールを持つメンバーによって作成されるすべてのオブジェクトは、自動的に dbo に属します。次の例には、名前修飾子 dbo が指定されています。

[!メモ]

お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

新しいストアド プロシージャを作成するには

  1. サーバー エクスプローラーで、[ストアド プロシージャ] フォルダーまたは同フォルダー内のいずれかのストアド プロシージャを右クリックします。

  2. ショートカット メニューの [新しいストアド プロシージャの追加] をクリックします。

    次のスケルトン SQL ステートメントからなる新しいストアド プロシージャが作成されます。

    CREATE PROCEDURE dbo.StoredProcedure1
    /*
       (
          @parameter1 datatype = default value,
          @parameter2 datatype OUTPUT
       )
    */
    AS
       /* SET NOCOUNT ON */
       RETURN
    
  3. 最初の行の StoredProcedure1 を新しいプロシージャの名前に置き換えます。たとえば、MyProcedure という名前を使用します。

    CREATE PROCEDURE dbo.MyProcedure
    

    [!メモ]

    ストアド プロシージャ名は一意であることが必要です。既にほかのストアド プロシージャに割り当てられている名前を選択すると、その名前のストアド プロシージャが既に存在することを警告するエラー メッセージが表示されます。

  4. 残りのプロシージャ テキストを SQL で作成します。

    ストアド プロシージャの詳細および例については、使用するデータベース サーバーのドキュメントを参照してください。Microsoft SQL Serverを使用する場合、SQL Server Books Online」の" CREATE PROCEDURE "を作成する「を参照してください。

新しいユーザー定義関数を作成するには

  1. サーバー エクスプローラーで、[関数] フォルダーまたは同フォルダー内のいずれかの関数を右クリックします。

  2. [新規追加] をポイントし、ショートカット メニューの [インライン関数][テーブル値関数]、または [スカラー値関数] をクリックします。

    [!メモ]

    新しい関数のスケルトン SQL ステートメントを、他の種類の SQL ステートメントに変更して結果を保存することはできません。たとえば、インライン関数の SQL ステートメントをスカラー値関数に変更することはできません。保存に失敗します。

    スケルトン SQL ステートメントからなる新しいユーザー定義関数が作成されます。たとえば、[スカラー値関数] を選択すると、次のスケルトン SQL ステートメントが作成されます。

    CREATE FUNCTION dbo.Function1
       (
       /*
       @parameter1 datatype = default value,
       @parameter2 datatype
       */
       )
    RETURNS /* datatype */
    AS
       BEGIN
          /* sql statement ... */
       RETURN /* value */
       END
    
  3. 最初の行の Function1 を新しい関数の名前に置き換えます。たとえば、MyFunction という名前を使用します。

    CREATE FUNCTION dbo.MyFunction
    

    [!メモ]

    ユーザー定義関数名は、一意であることが必要です。既に他の関数に割り当てられている名前を選択すると、その名前の関数が既に存在することを警告するエラー メッセージが表示されます。

  4. 残りの関数テキストを SQL で作成します。

[!メモ]

ショートカット メニューに必要なオプションが表示されない場合は、使用している Visual Studio のバージョンでこの機能がサポートされていない可能性があります。詳細については、「Microsoft Visual Database Tools と Visual Studio のエディション」を参照してください。

ユーザー定義関数の詳細および例については、使用するデータベース サーバーのドキュメントを参照してください。Microsoft SQL Serverを使用する場合、SQL Server Books Online 「の" CREATE FUNCTION」"を参照してください。

参照

概念

クエリでの式の使用

その他の技術情報

ストアド プロシージャおよびユーザー定義関数の使用