1 つのステートメントで許可されるプレースホルダーの最大数はいくつですか? つまり属性の上限NUM_OF_PARAMS.
複数行挿入の最大数を調整しようとすると、奇妙な問題が発生します。つまり、数を 20,000 に設定すると、$sth->{NUM_OF_PARAMS}
負になるためエラーが発生します。
最大挿入数を 5000 に減らすとうまくいきます。
ありがとう。
私が知る限り、DBI の唯一の制限は、値が Perl スカラーに配置されるため、その中に保持できることです。ただし、DBD の場合はまったく異なります。20000 個のパラメータをサポートするデータベースがあるとしたら、多くの疑いがあります。ところで、NUM_OF_PARAMS は読み取り専用なので、「数値を 20,000 に設定する」という意味がわかりません。20000 個のパラメーターを使用して SQL ステートメントを作成し、NUM_OF_PARAMS を読み取ると、負の値が返されるという意味だと思います。後者の場合は、rt.cpan.org で (例を挙げて) 報告することをお勧めします。
20000 個のパラメーターを使用して SQL ステートメントを作成することが、どのデータベースでも非常に効率的であるとは想像できません。可能であれば、それを範囲またはそれに似たものに減らしてみることをお勧めします。ODBC では、20000 個のパラメーターは 20000 個の IPD と APD を意味し、それらは非常に大きな構造です。DB2 cli ライブラリは ODBC に非常に似ているため、メモリを大量に消費することになると思います。
20,000 では負の問題が発生し、5,000 では発生しないことを考えると、システムのどこかに符号付き 16 ビット整数が存在するため、上限は約 16383 になります。
ただし、制限は、基礎となる DBMS と、DBMS の DBD モジュールで使用される API (および場合によっては DBD コード自体) によって異なります。DBI の影響を受けません。
それがあなたの問題に対処する最善の方法だと確信していますか?