Aktualizace: - Zřejmě po troše výzkumu (protože nepracuji s Oracle) ADODB nepodporuje adVariant (což je 12 ) a měli byste použít adVarChar (což je 200 ) místo toho.
Viz Odpověď:Klasické volání ASP uložené procedury Oracle s ovladačem OraOleadb
Zbytek odpovědi ponechte níže, protože po vyřešení tohoto problému bude pravděpodobně stále relevantní.
Příčinou je, že konkrétní chyba je obvykle neshoda typu dat, jakmile ADODB mluví s poskytovatelem definovaným připojením.
Stačí se podívat na definici procedury v Oracle ve srovnání s vaším ADODB.Command objekt Vidím, že p_return parametr se zdá být nesprávný. Mluvím o tom v předchozí odpovědi
na podobný dotaz
.
Podle Mapování datových typů
(skvělý zdroj pro mapování datových typů v ADO) adInteger (což je 3 ) mapuje na Int v Oracle ne Number . Místo toho byste měli použít adNumeric (což je 131 ) který by měl tuto konkrétní chybu opravit.
Zkuste změnit tento řádek
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 3, 2)
do
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 131, 2)
Užitečné odkazy
- Odpověď:Použití uložené procedury v klasickém ASP .. spustit a získat výsledky
- Odpověď:Chyba ADODB.Parameters '800a0e7c' Objekt parametru je nesprávně definován. Byly poskytnuty nekonzistentní nebo neúplné informace
(doporučujeme toto, chcete-li se naučit používat
METADATAvglobal.asaaby byly pojmenované konstanty ADO vždy dostupné pro webovou aplikaci ASP)