【ASP.NET】ASP.NETで、ストアド・プロシージャを使う

ストアド・プロシージャ

目的

 * 一連の複数の処理を実行し、その結果をSELECT文の実行結果と同様にクライアントに返す

構文

CREATE PROCEDURE 【プロシージャ名】
  [@【パラメータ名】 【データ型】 [=【デフォルト値】]
  [,...]]
AS
  【任意のSQL文】

サンプル

CREATE PROCEDURE SampleStoredProcedure
	@personAge int
AS
	SELECT          Id, Name, Address, Email, Age
	FROM            Person
	WHERE           (Age >= @personAge) 

■ストアド・プロシージャを作成する

 [1] VSのデータベース・エクスプローラから、[データ接続]-[【自分のDB】]-[ストアドプロシージャ]を右クリックし、[新しいストアドプロシージャの追加]を選択
 [2] ストアドプロシージャを作成する(上記【サンプル】参照のこと)
   => ASの後のSQL文を右クリックし、[SQLブロックのデザイン]を実行すると、SQL文を整形してくれる
   => 保存すると、データベース・エクスプローラの[ストアドプロシージャ]配下にSampleStoredProcedureストアド・プロシージャが追加されたことが確認できる

作成したストアド・プロシージャをテスト実行するには?

 [1] VSのデータベース・エクスプローラの[ストアドプロシージャ]配下にあるストアド・プロシージャを右クリックし、[実行]を選択
 [2] パラメータを入力し、「OK」押下

■ストアド・プロシージャを使用する

手順

準備:DataSetの追加

 [1] DataSetを追加する
 [2] データベース・エクスプローラから指定のテーブルを、手順[1]のDataSetにドラッグ&ドロップする
 [3] TableApapterを右クリックし、[構成]を選択
 [4] [既存のストアドプロシージャを使用する]-[次へ]を選択
 [5] 事前に用意しておいたストアドプロシージャを選択し、[次へ]
 [6] メソッド名を指定し、[完了]

使用例

 [1] SqlDataSource などのDataSourceを追加し、[>]押下し、[データソースの選択]を選択する
 [2] データ接続をし、[次へ]
 [3] [カスタムSQLステートメントまたはストアドプロシージャを指定する]-[次へ]
 [4] [ストアドプロシージャ]で、事前に用意しておいたストアドプロシージャを選択し[次へ]
 [5] パラメータを定義を決め、[完了]
 [6] GridView を追加じ、[>]押下し、[データソースの選択]から使用例[1]を選択する
 [7] 後はお好みで。。。

サンプル

<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1">
    <Columns>
        <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" 
            ReadOnly="True" SortExpression="Id" />
        <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
        <asp:BoundField DataField="Address" HeaderText="Address" 
            SortExpression="Address" />
        <asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
        <asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:SampleDBConnectionString %>" 
    SelectCommand="SampleStoredProcedure" SelectCommandType="StoredProcedure">
    <SelectParameters>
        <asp:ControlParameter ControlID="TextBox1" Name="personAge" PropertyName="Text" 
            Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>