Ich versuche, eine MSSQL gespeicherte Prozedur von Excel VBA mit ADODB 2.0-Bibliothek (versuchte 2.8 auch, aber das gleiche Problem existiert) , die sendet Ergebnismenge sowie Rückgabewert. Ich bin in der Lage, die Ergebnismenge Wert korrekt zu erhalten, aber nicht in der Lage Rückgabewert zu erhaltenIch bin nicht in der Lage, Rückgabewert der gespeicherten Prozedur, die Ergebnis zurückgibt sowie Rückgabewert
Unten ist die VBA-Prozedur für diesen Zweck verwendet und dies die folgenden Parameter (immer Rückgabewert als leer zu bekommen.): db connection, sp name, parameter values string array, db result set, spretval
- letzt zwei sind Parameter aus
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
nach Ausführung dieser VBA-Prozedur, Ergebnismenge immer mit, die ich bin in der Lage, die Ergebnismenge Wert korrekt zu erhalten, aber nicht Wert zurück. Ich bekomme nur einen leeren Wert (tatsächlich gibt der SP 10 zurück)
Die gespeicherte Prozedur enthält einige Verarbeitung, um Daten in temporäre Tabellen einzufügen, und schließlich alle Zeilen aus der temporären Tabelle über einen Auswahlbefehl zurück und danach zurückzukehren Wert.
Was könnte das Problem mit diesem Code sein?