次の記事 | 前の記事

2009-07-17

ストアドプロシージャの戻り値取得方法(.Net2.0 SqlDataSource)

Visual Studio 2005 で SqlDataSource を使ってストアドプロシージャを実行したときに戻り値がある場合の取得方法を調べたメモ。

InsertQueryにストアドプロシージャを設定して普通に Output用パラメータを画面上の項目とかにバインドしても全然反映しないのでいろいろと調べてみた結果、
Insertedイベントのパラメータで渡される SqlDataSourceStatusEventArgs e で取得できるらしいということが判った。

と言うことで、実験した。


- - - - - - - - -
実験用のストアドプロシージャ:PROC_TEST
Procedure text:
==================================================
DECLARE VARIABLE strInnerTXT VARCHAR(20);
BEGIN

RES_STR = CUST_NM || ':' || CUST_NM_KN;

END
==================================================
Parameters:
CUST_NM INPUT VARCHAR(40)
CUST_NM_KN INPUT VARCHAR(60)
RES_STR OUTPUT VARCHAR(20)
- - - - - - - - -


Inserted イベント用のメソッドで止まるようにブレイクポイント指定して、変数 e の内容を調べた結果

イミディエイトウィンドウにて
? e.Command.Parameters["@RES_STR"]
とかやると、結果は...
{@RES_STR}
[FirebirdSql.Data.FirebirdClient.FbParameter]: {@RES_STR}
base {System.MarshalByRefObject}: {@RES_STR}
DbType: String
Direction: Output
IsNullable: false
ParameterName: "@RES_STR"
Size: 0
SourceColumn: ""
SourceColumnNullMapping: false
SourceVersion: Current
Value: "a:b"

と言うことは、
? e.Command.Parameters["@RES_STR"].Value
"a:b" (これが実際に返される値で間違いなし)

つまり、Insertedイベントのメソッド内で
e.Command.Parameters[出力用パラメータ].Value
で、取得できる。
ということが確認できました。

ちなみに実際には行を挿入しつつ、その行のプライマリキーを返すストアドプロシージャとかのときに使います。
category07. ASP.NET関連(Monoも)  time2009-07-17 18:25  authorkagekino 

コメント

コメントはまだありません。

コメント追加

このアイテムは閉鎖されました。このアイテムへのコメントの追加、投票はできません。

トラバ

トラバ
トラバピングURL
http://weblog.hip-labo.com/action.php?action=plugin&name=TrackBack&tb_id=142
手動によるトラバは こちらからどうぞ。