Aktualizacja: - Najwyraźniej po odrobinie badań (ponieważ nie pracuję z Oracle) ADODB nie obsługuje adVariant
(czyli 12
) i powinieneś użyć adVarChar
(czyli 200
) zamiast tego.
Zobacz O:Klasyczna ASP wywołująca procedurę składowaną Oracle ze sterownikiem OraOleadb
Pozostawiając resztę odpowiedzi poniżej, ponieważ prawdopodobnie nadal będzie ona aktualna po rozwiązaniu tego problemu.
Przyczyną tego konkretnego błędu jest zwykle niezgodność typu danych, gdy ADODB komunikuje się z dostawcą zdefiniowanym przez połączenie.
Wystarczy spojrzeć na definicję procedury w Oracle w porównaniu z twoim ADODB.Command
obiekt Widzę, że p_return
parametr wydaje się być nieprawidłowy. Mówię o tym w poprzedniej odpowiedzi
na podobne pytanie
.
Według Mapowanie typu danych
(świetne źródło mapowania typów danych w ADO) adInteger
(czyli 3
) mapuje na Int
w Oracle nie Number
. Zamiast tego powinieneś użyć adNumeric
(czyli 131
) które powinny naprawić ten konkretny błąd.
Spróbuj zmienić tę linię
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 3, 2)
do
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 131, 2)
Przydatne linki
- O:Korzystanie z procedury przechowywanej w klasycznej ASP .. wykonaj i uzyskaj wyniki
- O:Błąd ADODB.Parameters „800a0e7c” Obiekt parametru jest nieprawidłowo zdefiniowany. Podano niespójne lub niekompletne informacje
(polecam to, aby dowiedzieć się, jak korzystać z
METADATA
wglobal.asa
aby stałe nazwane ADO były zawsze dostępne dla aplikacji internetowej ASP)