SQL SERVERを使ったプログラムを相当作っていたのだが、SPが返すRETURN値を受け取る方法を知らなかった。今回、初めて知ったのでメモ。
Dim rc As Integer = 0 ' RETURN値
Using connection As New SqlClient.SqlConnection(My.Settings.kntnkConnectionString)
' コネクションを開く
connection.Open()
'コマンドをコネクションから作成する
Dim command As SqlClient.SqlCommand = connection.CreateCommand
Try
' #ストアドプロシージャを実行する
With command
' SQLサーバーのタイムアウト時間
.CommandTimeout = 60
' 実行するストアドプロシージャ名を指定
.CommandText = "SE050_対象品番抽出"
' ストアドプロシージャのパラメータを設定
' commandオブジェクトのパラメータを初期化する
.Parameters.Clear()
.Parameters.Add("@UserID", SqlDbType.VarChar).Value = G_UserID
.Parameters.Add("ReturnValue", System.Data.SqlDbType.Int)
.Parameters("ReturnValue").Direction = System.Data.ParameterDirection.ReturnValue
' コマンドの種類をストアドに変更
.CommandType = CommandType.StoredProcedure
' コマンド実行
.ExecuteNonQuery()
rc = CInt(.Parameters("ReturnValue").Value)
Debug.WriteLine("SE050_対象品番抽出 returnValue=" & rc.ToString)
End With
Catch ex As Exception
QueriesTableAdapter.InsertQuery_TK_SYSLOG("", "", "SE050K01_原材料未登録部品登録", ex.Message & vbCrLf & GetCurrentLineNumber.ToString & "行目を実行中", G_UserID)
MsgBox(ex.Message)
End Try
'コネクションを閉じる
connection.Close()
End Using
Using connection As New SqlClient.SqlConnection(My.Settings.kntnkConnectionString)
' コネクションを開く
connection.Open()
'コマンドをコネクションから作成する
Dim command As SqlClient.SqlCommand = connection.CreateCommand
Try
' #ストアドプロシージャを実行する
With command
' SQLサーバーのタイムアウト時間
.CommandTimeout = 60
' 実行するストアドプロシージャ名を指定
.CommandText = "SE050_対象品番抽出"
' ストアドプロシージャのパラメータを設定
' commandオブジェクトのパラメータを初期化する
.Parameters.Clear()
.Parameters.Add("@UserID", SqlDbType.VarChar).Value = G_UserID
.Parameters.Add("ReturnValue", System.Data.SqlDbType.Int)
.Parameters("ReturnValue").Direction = System.Data.ParameterDirection.ReturnValue
' コマンドの種類をストアドに変更
.CommandType = CommandType.StoredProcedure
' コマンド実行
.ExecuteNonQuery()
rc = CInt(.Parameters("ReturnValue").Value)
Debug.WriteLine("SE050_対象品番抽出 returnValue=" & rc.ToString)
End With
Catch ex As Exception
QueriesTableAdapter.InsertQuery_TK_SYSLOG("", "", "SE050K01_原材料未登録部品登録", ex.Message & vbCrLf & GetCurrentLineNumber.ToString & "行目を実行中", G_UserID)
MsgBox(ex.Message)
End Try
'コネクションを閉じる
connection.Close()
End Using