Aktualisierung: - Anscheinend nach ein wenig Recherche (da ich nicht mit Oracle arbeite) ADODB unterstützt adVariant
nicht (das ist 12
) und Sie sollten adVarChar
verwenden (das ist 200
) stattdessen.
Siehe A:Classic ASP Calling Oracle Stored Procedure with OraOleadb Driver
Lassen Sie den Rest der Antwort unten, da er wahrscheinlich immer noch relevant ist, sobald dieses Problem behoben ist.
Die Ursache dieses speziellen Fehlers ist normalerweise eine Nichtübereinstimmung des Datentyps, sobald die ADODB mit dem durch die Verbindung definierten Anbieter kommuniziert.
Betrachten Sie einfach die Prozedurdefinition in Oracle im Vergleich zu Ihrem ADODB.Command
Objekt kann ich sehen, dass der p_return
Parameter scheint falsch zu sein. Ich spreche darüber in einer vorherigen Antwort
auf eine ähnliche Frage
.
Gemäß Datentypzuordnung
(eine großartige Ressource für die Datentypzuordnung in ADO) adInteger
(das ist 3
) wird auf Int
abgebildet in Oracle nicht Number
. Stattdessen sollten Sie adNumeric
verwenden (das ist 131
) was diesen speziellen Fehler beheben sollte.
Versuchen Sie, diese Zeile zu ändern
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 3, 2)
zu
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 131, 2)
Nützliche Links
- A:Gespeicherte Prozeduren in klassischem ASP verwenden ... ausführen und Ergebnisse erhalten
- A:ADODB.Parameters error '800a0e7c' Parameterobjekt ist falsch definiert. Es wurden widersprüchliche oder unvollständige Informationen bereitgestellt
(Empfehlen Sie dies, um zu lernen, wie man
METADATA
verwendet inglobal.asa
um benannte ADO-Konstanten immer für eine ASP-Webanwendung verfügbar zu haben)