連載:VS 2005でいってみようDBプログラミング

第8回 Let's Master ストアド・プロシージャ!(前編)

山田 祥寛(http://www.wings.msn.to/
2006/09/30
Page1 Page2 Page3 Page4

ストアド・プロシージャから戻り値を取得する

 ストアド・プロシージャでは、呼び出し元に返したい値が1つで、かつ、それが整数値である場合には、出力パラメータではなく「戻り値」を利用することも可能です。前項のサンプル・コードを戻り値を使って書き換えてみましょう。

[1]ストアド・プロシージャSelectProcを修正する

 前項同様、ストアド・プロシージャ「SelectProc」をサーバ・エクスプローラから開き、リスト5のように変更してみましょう。太字部分が追記/削除個所です。

ALTER PROCEDURE SelectProc
  @publish_id INT
  @num INT OUTPUT  ←この行を削除
AS
  IF @publish_id=0
    BEGIN
      ……中略……
    END
  ELSE
    BEGIN
      ……中略……
    END
  RETURN @@ROWCOUNT
リスト5 戻り値を返すストアド・プロシージャの定義

 戻り値を返すのは、RETURN命令の役割です。RETURN命令はそのまま呼び出し元に処理を返し、後続の命令は実行されませんので、注意してください。

[2]パラメータを定義する

 ストアド・プロシージャの戻り値をASP.NETから利用するには、出力パラメータ同様、SqlDataSourceコントロールに戻り値(パラメータ)を登録しておく必要があります。プロパティ・ウィンドウからSqlDataSourceコントロール(IDは「proc_sds」)のSelectQueryプロパティを選択し、[...]ボタンをクリックしてください*4

*4 戻り値パラメータは、ウィザードによって自動認識されませんので、データベース構成ウィザードから編集することはできません。

 これにより[コマンドおよびパラメータのエディタ]ダイアログが開きます。


図11 [コマンドおよびパラメータのエディタ]ダイアログ

 ここで[パラメータの追加]ボタンをクリックし、さらに[パラメータを最新の情報に更新する]ボタンをクリックします。すると、「RETURN_VALUE」という名前のパラメータが追加されたことが確認できるはずです。

 次に[詳細設定プロパティの表示]リンクをクリックし、表示されたプロパティ・グリッドからDirectionプロパティが「ReturnValue」、Typeプロパティが「Int32」にそれぞれ設定されていることを確認しましょう。これによって、RETURN_VALUEパラメータは戻り値パラメータと見なされ、.aspxファイルから適宜参照することが可能になります。

[3]戻り値パラメータの値を取得する

 コードから戻り値を取得するには、出力パラメータと同様の方法で可能です。先ほど作成したSelectedイベント・ハンドラを以下のように書き換えてみましょう。

Protected Sub proc_sds_Selected(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs)
  result.Text = e.Command.Parameters("@RETURN_VALUE").Value & "件を取得しました"
End Sub
リスト6 ストアド・プロシージャの戻り値を取得/表示するコード(sp.aspx)

 sp.aspxを実行し、先ほど同様、表示されているレコード件数がページ上部に表示されれば成功です。

 以上、今回はストアド・プロシージャを利用した基本的なデータ取得の方法を紹介しました。次回は引き続きストアド・プロシージャを利用して、トランザクション処理を含む更新処理や、ストアド・プロシージャ内で得た結果セットの内容を処理するためのカーソルなどについて紹介する予定です。End of Article


 INDEX
  Visual Studio 2005でいってみようDBプログラミング
  第8回 Let's Master ストアド・プロシージャ!(前編)
    1.ストアド・プロシージャ基本のキ(1)
    2.ストアド・プロシージャ基本のキ(2)
    3.ストアドに条件分岐を追加する/ストアドから出力パラメータを取得する
  4.ストアド・プロシージャから戻り値を取得する
 
インデックス・ページヘ  「Visual Studio 2005でいってみようDBプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間