- - PR -
SQL-ServerのストアドからRETURN値を取得したい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-02-25 21:32
お世話になっております。
ASP.NET(VB.NET)からSQL-Serverのストアドプロシージャを実行して、 ストアドプロシージャからRETURN値(@RETURN_VALUE)を得たいのですが、 どのように記述すればいいのでしょうか? <現在のVB.NET側の記述> sqlcmd.Connection = cn sqlcmd.CommandText = "TestP" '"TestP" ストアドプロシージャ名 sqlcmd.CommandType = CommandType.StoredProcedure sqlcmd.Parameters.Clear() InPara = sqlcmd.Parameters.Add("@@inPara1", "AAA") InPara.Direction = ParameterDirection.Input OutPara = sqlcmd.Parameters.Add("@@outPara1", SqlDbType.VarChar, 200, "") OutPara.Direction = ParameterDirection.Output sqlcmd.ExecuteNonQuery() <環境> VisualStudio.NET 2002(VB.NET WEBフォーム) SQL-Server2000 ExecuteNonQueryは影響を受けた行数を返すだけなので、 これではダメだな、というのはわかるのですが・・・ どなたかご教授下さい。 宜しくお願いします。 | ||||||||
|
投稿日時: 2004-02-26 08:59
vaiさん、お早うございます。
OutPara で取得するんじゃないですか? | ||||||||
|
投稿日時: 2004-02-26 10:11
きくちゃんさん、ご回答ありがとうございます。
まず、今回使用しているストアドプロシージャの 冒頭の部分を記述させていただきます。 ALTER PROCEDURE TestP( @@inPara1 varchar(3) = null, @@outPara1 varchar(200) = null OUTPUT) AS ・・・ OutParaで取得出来るものは、 OUTPUTとして定義しているものだという認識なのですが、 確かにOUTPUTとして定義しているもの(@@outPara1)は 問題なく取得できています。 今回やりたいことは、SQL-SERVERのストアドで、 どのストアドにも必ず@RETURN_VALUEという戻り値があると思うのですが、 その戻り値を取得したいのです。 試しに、 OutPara = sqlcmd.Parameters.Add("@RETURN_VALUE", SqlDbType.int) OutPara.Direction = ParameterDirection.Output とやってみましたが、 "プロシージャまたは関数 TestP の引数が多すぎます。" というエラーが返ってきてしまいました。 | ||||||||
|
投稿日時: 2004-02-26 10:53
vaiさん、こんにちは。
試してませんが、こんなん↓でどうでしょう?
| ||||||||
|
投稿日時: 2004-02-26 11:23
きくちゃんさん、ご回答ありがとうございます。
きくちゃんさんに教えていただいた通りに試してみたところ、 RETURN_VALUEの取得に成功しました。 ありがとうございます。 HELPでParameterDirectionを調べると、 思いっきり書いてありますね・・・ 申し訳ございませんでした。 |
1