ストアド・プロシージャ
目的
* 一連の複数の処理を実行し、その結果を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>