Uppdatering: - Tydligen efter lite research (eftersom jag inte jobbar med Oracle) ADODB stöder inte adVariant
(vilket är 12
) och du bör använda adVarChar
(vilket är 200
) istället.
Se A:Classic ASP calling Oracle stored procedure with OraOleadb Driver
Lämna resten av svaret nedan eftersom det förmodligen fortfarande är relevant när det här problemet är åtgärdat.
Orsaken är att det specifika felet vanligtvis inte matchar datatypen när ADODB pratar med leverantören som definieras av anslutningen.
Titta bara på procedurdefinitionen i Oracle i jämförelse med din ADODB.Command
objekt Jag kan se att p_return
parametern verkar vara felaktig. Jag pratar om detta i ett tidigare svar
till en liknande fråga
.
Enligt Data Type Mapping
(en utmärkt resurs för datatypmappning i ADO) adInteger
(vilket är 3
) mappar till Int
i Oracle inte Number
. Istället bör du använda adNumeric
(vilket är 131
) som borde fixa det specifika felet.
Försök att ändra den här raden
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 3, 2)
till
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 131, 2)
Användbara länkar
- A:Använda lagrad procedur i klassisk ASP .. kör och få resultat
- Svar:ADODB.Parameters error '800a0e7c' Parameterobjektet är felaktigt definierat. Inkonsekvent eller ofullständig information lämnades
(rekommenderar detta för att lära dig hur du använder
METADATA
iglobal.asa
att alltid ha ADO Named Constants tillgängliga för en ASP-webbapplikation)