Актуализация: - Очевидно след малко проучване (тъй като не работя с Oracle) ADODB не поддържа adVariant
(което е 12
) и трябва да използвате adVarChar
(което е 200
) вместо това.
Вижте A:Класически ASP, извикващ съхранена процедура на Oracle с драйвер OraOleadb
Оставяме останалата част от отговора по-долу, тъй като вероятно все още е уместен, след като този проблем бъде коригиран.
Причината за тази конкретна грешка обикновено е несъответствие на типа данни, след като ADODB говори с доставчика, дефиниран от връзката.
Просто гледам дефиницията на процедурата в Oracle в сравнение с вашата ADODB.Command
виждам, че p_return
параметърът изглежда неправилен. Говоря за това в предишен отговор
към подобен въпрос
.
Според Mapping на типове данни
(страхотен ресурс за картографиране на типове данни в ADO) adInteger
(което е 3
) картографира към Int
в Oracle не Number
. Вместо това трябва да използвате adNumeric
(което е 131
) което трябва да коригира тази конкретна грешка.
Опитайте да промените този ред
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 3, 2)
до
strcmd2.Parameters.Append strCmd2.CreateParameter("p_return", 131, 2)
Полезни връзки
- A:Използване на съхранена процедура в класически ASP .. изпълнете и получете резултати
- A:Грешка в ADODB.Parameters '800a0e7c' Обектът на параметър е неправилно дефиниран. Предоставена е непоследователна или непълна информация
(препоръчайте това, за да научите как да използвате
METADATA
вglobal.asa
за да имате ADO Named Constants винаги достъпни за ASP уеб приложение)