TStoredProc ExecProc 呼び出しで、パラメーターの数またはパラメーターの全体的なサイズに制限はありますか?
現在、BDE を使用して Oracle に接続しているシステムを実行しており、パッケージ プロシージャへのパラメータ数が最近変更されたため、アクセス違反が発生し始めました。params カウントは最大 291 になり、AV は TStoredProc の ExecProc 呼び出しで作成されます。
リストから単一のパラメーターを削除すると (任意のパラメーター、特定のパラメーターである必要はありません)、ExecProc 呼び出しは正常に機能します。
コードをデバッグしたところ、DBTables.pas 内の TStoredProc.BindParams プロシージャでアクセス違反がスローされています。私はいくつかのウォッチを設定しています。そのうちの 1 つは SizeOf(FRecordBuffer) で、この手順を進めると、値は 65535 です。これは MaxWord (Windows.pas) です。DBTables コード内に指定された制限はありません。
コール スタックは TStoredProd.ExecProc -> TStoredProc.CreateCursor -> TStoredProc.GetCursor -> TStoredProc.BindParams であり、アクセス違反は FParams を繰り返す for ループでスローされます。
事前に感謝します。回避できるように、特定できるものを見つける必要があります。