TStoredProc ExecProc 调用中参数的数量或参数的总体大小是否有限制?
当前运行的系统仍在使用 BDE 连接到 Oracle,并且最近更改包过程的参数数量开始产生访问冲突。参数计数现在高达 291,并且正在 TStoredProc 的 ExecProc 调用中创建 AV。
如果我们从列表中删除单个参数(任何参数,不必是特定参数), ExecProc 调用就可以正常工作。
我已经通过代码进行了调试,并且使用 DBTables.pas 中的 TStoredProc.BindParams 过程引发了访问冲突。我设置了几个手表,其中一个是 SizeOf(FRecordBuffer),当我逐步执行此过程时,该值是 65535。这是 MaxWord (Windows.pas)。我没有看到 DBTables 代码中有任何指定的限制。
调用堆栈是 TStoredProd.ExecProc -> TStoredProc.CreateCursor -> TStoredProc.GetCursor -> TStoredProc.BindParams 并且在遍历 FParams 的 for 循环中引发访问冲突。
在此先感谢,我们需要找到可以查明的东西,以便我们可以避开。