- PR -

SQL-ServerのストアドからRETURN値を取得したい

1
投稿者投稿内容
vai
会議室デビュー日: 2004/01/24
投稿数: 5
投稿日時: 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は影響を受けた行数を返すだけなので、
これではダメだな、というのはわかるのですが・・・

どなたかご教授下さい。
宜しくお願いします。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-02-26 08:59
vaiさん、お早うございます。

OutPara で取得するんじゃないですか?
vai
会議室デビュー日: 2004/01/24
投稿数: 5
投稿日時: 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 の引数が多すぎます。"
というエラーが返ってきてしまいました。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-02-26 10:53
vaiさん、こんにちは。

引用:

試しに、
 OutPara = sqlcmd.Parameters.Add("@RETURN_VALUE", SqlDbType.int)
 OutPara.Direction = ParameterDirection.Output
とやってみましたが、
"プロシージャまたは関数 TestP の引数が多すぎます。"
というエラーが返ってきてしまいました。


試してませんが、こんなん↓でどうでしょう?

コード:
 RetPara = sqlcmd.Parameters.Add("RETURN_VALUE", SqlDbType.int) 
 RetPara.Direction = ParameterDirection.ReturnValue

vai
会議室デビュー日: 2004/01/24
投稿数: 5
投稿日時: 2004-02-26 11:23
きくちゃんさん、ご回答ありがとうございます。

きくちゃんさんに教えていただいた通りに試してみたところ、
RETURN_VALUEの取得に成功しました。
ありがとうございます。


HELPでParameterDirectionを調べると、
思いっきり書いてありますね・・・
申し訳ございませんでした。
1

スキルアップ/キャリアアップ(JOB@IT)