Excel VBAからADODB 2.0ライブラリを使用してMSSQLストアドプロシージャを実行しようとしています(2.8も試しましたが同じ問題があります) 結果セットと戻り値を送信します。 (。常に空のように戻り値を取得)私は、結果セットの値が正しくなく、戻り値を取得することができませんが、取得することができる午前以下結果セットと戻り値を返すストアドプロシージャの戻り値を取得することができません
は、この目的のために使用されるVBAの手順であり、これは次のパラメータを取ります。 db connection, sp name, parameter values string array, db result set, spretval
- 最後二人は出ている私が正しく、結果セットの値を取得しますが、値を返さないことができていた使用して結果セットを取得し、このVBAプロシージャの実行後
Private Sub execSQLSP(dbcon, spname, paramStrInArray, ByRef dbrs, ByRef spretval)
Dim cmd As ADODB.Command
Dim dberrflag As Integer
Dim dberrdesc As String
Dim ndx As Long
Dim paramname As String
On Error Resume Next
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = dbcon
cmd.CommandText = spname
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter("retVal", adInteger, _
adParamReturnValue)
For ndx = 0 To UBound(paramStrInArray)
paramname = "param" & ndx
cmd.Parameters.Append cmd.CreateParameter(Name:=paramname, _
Type:=adVarChar, Direction:=adParamInput, _
size:=Len(paramStrInArray(ndx)), _
Value:=paramStrInArray(ndx))
Next
Set dbrs = cmd.Execute
Call getDBerror(dbcon.Errors, dberrflag, dberrdesc)
If dberrflag = 1 Then
MsgBox "DB Error while executing following SQL command and hence stopping." & vbCrLf & _
"SQL Cmd:" & spname & vbCrLf & _
"DB Err.:" & dberrdesc, vbCritical, appnameversion
cleanup
End
End If
spretval = cmd.Parameters("retVal").Value
MsgBox cmd.Parameters("retVal")
End Sub
パラメータ。私は空値のみを取得しています(実際にはSPは10を返します)
ストアドプロシージャには、値。
このコードでは何が問題になりますか?