Есть ли ограничения на количество параметров или общий размер параметров в вызове TStoredProc ExecProc?
В настоящее время работает система, которая все еще использует BDE для подключения к Oracle, и недавнее изменение количества параметров в процедуре пакета привело к нарушениям прав доступа. Количество параметров теперь достигает 291, и AV создается в вызове ExecProc для TStoredProc.
Если мы удалим один параметр из списка (любой параметр, не обязательно определенный параметр), вызов ExecProc будет работать нормально.
Я выполнил отладку кода, и нарушение прав доступа было вызвано процедурой TStoredProc.BindParams в DBTables.pas. У меня настроено несколько часов, один из которых — SizeOf(FRecordBuffer), и когда я выполняю эту процедуру, значение равно 65535. Это MaxWord (Windows.pas). Я не вижу каких-либо ограничений в коде DBTables.
Стек вызовов представляет собой TStoredProd.ExecProc -> TStoredProc.CreateCursor -> TStoredProc.GetCursor -> TStoredProc.BindParams, и нарушение прав доступа вызывается в цикле for, который перебирает FParams.
Заранее спасибо, нам нужно найти что-то точное, чтобы держаться подальше.