Perl DBI占位符中的最大NUM_OF_PARAMS是多少

时间:2011-10-26 04:24:58

标签: perl dbi dbd

单个声明中允许的最大占位符数是多少?即属性NUM_OF_PARAMS.

的上限

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

据我所知,DBI的唯一限制是将值放入Perl标量中,因此它可以保存在其中。但是,对于DBD来说,它完全不同。我怀疑很多,如果有任何数据库支持20000参数。 BTW,NUM_OF_PARAMS是readonly所以我不知道你的意思是“将数字设置为20,000”。我认为你只是意味着你创建一个包含20000个参数的SQL语句,然后读取NUM_OF_PARAMS,它会给你一个负值。如果是后者,我建议您在rt.cpan.org上报告(带有示例)因为它听起来不对。

我无法想象在任何数据库中创建具有20000个参数的SQL语句都会非常有效。如果可以的话,尝试将其减少到范围或类似的东西要好得多。在ODBC中,20000个参数意味着20000个IPD和APD,它们是相当大的结构。由于DB2 cli库非常像ODBC,我想你会吃掉大量的内存。

答案 1 :(得分:0)

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

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

您确定这是解决问题的最佳方法吗?