連載:VS 2005でいってみようDBプログラミング第8回 Let's Master ストアド・プロシージャ!(前編)山田 祥寛(http://www.wings.msn.to/)2006/09/30 |
|
|
ストアド・プロシージャから戻り値を取得する
ストアド・プロシージャでは、呼び出し元に返したい値が1つで、かつ、それが整数値である場合には、出力パラメータではなく「戻り値」を利用することも可能です。前項のサンプル・コードを戻り値を使って書き換えてみましょう。
[1]ストアド・プロシージャSelectProcを修正する
前項同様、ストアド・プロシージャ「SelectProc」をサーバ・エクスプローラから開き、リスト5のように変更してみましょう。太字部分が追記/削除個所です。
| |
リスト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イベント・ハンドラを以下のように書き換えてみましょう。
| |
リスト6 ストアド・プロシージャの戻り値を取得/表示するコード(sp.aspx) |
sp.aspxを実行し、先ほど同様、表示されているレコード件数がページ上部に表示されれば成功です。
■
以上、今回はストアド・プロシージャを利用した基本的なデータ取得の方法を紹介しました。次回は引き続きストアド・プロシージャを利用して、トランザクション処理を含む更新処理や、ストアド・プロシージャ内で得た結果セットの内容を処理するためのカーソルなどについて紹介する予定です。
INDEX | ||
Visual Studio 2005でいってみようDBプログラミング | ||
第8回 Let's Master ストアド・プロシージャ!(前編) | ||
1.ストアド・プロシージャ基本のキ(1) | ||
2.ストアド・プロシージャ基本のキ(2) | ||
3.ストアドに条件分岐を追加する/ストアドから出力パラメータを取得する | ||
4.ストアド・プロシージャから戻り値を取得する | ||
「Visual Studio 2005でいってみようDBプログラミング」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|