0

单个语句中允许的最大占位符数量是多少?即属性上限NUM_OF_PARAMS.

我遇到了一个奇怪的问题,我尝试调整插入的多行的最大数量,即将数量设置为 20,000 会给我一个错误,因为它$sth->{NUM_OF_PARAMS}变成了负数。

将最大插入次数减少到 5000 可以正常工作。

谢谢。

4

2 回答 2

1

据我所知,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 非常相似,我想你会吃掉大量的内存。

于 2011-11-11T15:27:56.960 回答
0

鉴于 20,000 会导致负面问题,而 5,000 不会导致负面问题,系统中某处有一个带符号的 16 位整数,因此上限约为 16383。

但是,该限制取决于底层 DBMS 和 DBD 模块用于 DBMS 的 API(可能还有 DBD 代码本身);它不受 DBI 影响。

你确定这是解决你的问题的最好方法吗?

于 2011-11-11T17:16:17.250 回答