Ausführen der Gespeicherten Prozedur von Classic ASP
Für einige fantastische Grund finde ich mich selbst Debuggen eines Problems in einer Klassischen ASP-Seite (mindestens 10 Jahre meines Lebens verloren in den letzten 2 Tagen).
Ich bin versucht, eine gespeicherte Prozedur ausführen, die enthält einige OUT-Parameter. Das problem ist, dass man die OUT-Parameter wird nicht aufgefüllt, wenn die gespeicherte Prozedur gibt. Ich kann führen Sie die gespeicherte Prozedur von SQL-management-studio (das ist 2008) und alle Werte sind gesetzt, und kehrte, genau wie erwartet.
declare @inVar1 varchar(255)
declare @inVar2 varchar(255)
declare @outVar1 varchar(255)
declare @outVar2 varchar(255)
SET @inVar2 = 'someValue'
exec theStoredProc @inVar1 , @inVar2 , @outVar1 OUT, @outVar2 OUT
print '@outVar1=' + @outVar1
print '@outVar2=' + @outVar2
Funktioniert Super. Fantastisch. Perfekt. Die genauen Werte, die ich erwarte zurückgegeben werden und ausgedruckt werden.
Recht, da bin ich versucht zu Debuggen einer Klassischen ASP-Seite, die ich kopiert den code in eine VBScript-Datei, um zu versuchen und das problem einzugrenzen.
Hier ist was ich kam mit:
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "xxx"
Set objCommandSec = CreateObject("ADODB.Command")
objCommandSec.ActiveConnection = Conn
objCommandSec.CommandType = 4
objCommandSec.CommandText = "theStoredProc "
objCommandSec.Parameters.Refresh
objCommandSec.Parameters(2) = "someValue"
objCommandSec.Execute
MsgBox(objCommandSec.Parameters(3))
Nicht funktioniert. Nicht einmal ein kleines bisschen. (Weitere zehn Jahre meines Lebens den Bach runter) Der Dritte parameter ist einfach NULL - das ist, was ich erlebe in der Klassischen ASP-Seite als auch.
Könnte jemand etwas Licht in diese Schuppen? Bin ich völlig bescheuert zu denken, dass die klassische ASP-code würde die gleiche sein, wie das VBScript-code? Ich denke, es ist mit scripting engine und die syntax, so dass ich ok sein sollte, aber ich bin mir nicht 100% sicher.
Das Ergebnis sehe ich aus meinem VBScript ist die gleiche, wie ich bin zu sehen in ASP.
InformationsquelleAutor Jaco Pretorius | 2010-04-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
Sollten Sie auch vermeiden
.Refresh
wenn Sie wissen, die parameter-details da es sich um eine Reise zurück an den server.Diese funktioniert bei mir: pastebin.com/RsqwzJ02 (aus einem .VBS) Sie Sind vielleicht läuft das nach einem On Error Resume Next ?
Das Beispiel funktioniert für mich, aber wenn ich ändern Sie die Typen der Variablen in der gespeicherten proc es nicht funktioniert - wie würden Sie Zugriff auf die, die ich gepostet dort? pastebin.com/qr2jVHSA
Wow, ist das eigentliche problem war mit Berechtigungen auf die gespeicherte Prozedur, aber dein Beispiel hat mir geholfen, es herauszufinden. Dank
für int-Werte der Typ adinteger (3) anstelle der advarchar (200) und die Größe ist 4 (4 bytes in einem 32-bit integer); .Parameter.Append .CreateParameter("@inVar1", 3, 1, 4, 123456) .Parameter.Append .CreateParameter("@outVar1", 3, 2, 4)
InformationsquelleAutor Alex K.
Nicht vergessen, die
Direction
zuOutput
:InformationsquelleAutor Oded
Andere Lösung ist hier.
Deshalb habe ich den folgenden code, Deshalb habe ich den folgenden code objCommandSec.Parameter.append objCommandSec.CreateParameter("@inVar1",adInteger,adParamInput) objCommandSec.Parameter.append objCommandSec.CreateParameter("@inVar2",adVarChar,adParamInput,200, "load_test_10") objCommandSec.Parameter.append objCommandSec.CreateParameter("@outVar1",adInteger,adParamReturnValue) objCommandSec.Parameter.append objCommandSec.CreateParameter("@outVar2",adVarChar,adParamReturnValue, 50)
Ok, epic fail auf Kommentar formatieren
InformationsquelleAutor Alex Park