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