Каков максимальный NUM_OF_PARAMS в заполнителях Perl DBI?

Какое максимальное количество заполнителей допускается в одном утверждении? Т.е. верхний предел атрибута NUM_OF_PARAMS.

У меня возникла странная проблема, когда я пытаюсь настроить максимальное количество вставок нескольких строк, т. Е. Установить число в 20 000 дает мне ошибку, потому что $sth->{NUM_OF_PARAMS} становится отрицательным.

Снижение максимальной вставки до 5000 работает нормально.

Благодарю.

2 ответа

Насколько мне известно, единственное ограничение в DBI - это то, что значение помещается в скаляр Perl, так что это то, что можно удерживать в этом. Однако для DBD это совсем другое. Я сомневаюсь во многих, если какие-либо базы данных поддерживают 20000 параметров. КСТАТИ, NUM_OF_PARAMS только для чтения, поэтому я понятия не имею, что вы подразумеваете под "установить число в 20 000". Я предполагаю, что вы просто имеете в виду, что вы создаете оператор SQL с 20000 параметрами, а затем читаете NUM_OF_PARAMS, и это дает вам отрицательное значение. Если последнее, я предлагаю вам сообщить (с примером), что на rt.cpan.org, как это звучит не совсем правильно.

Я не могу представить, что создание оператора SQL с 20000 параметрами будет очень эффективным в любой базе данных. Намного лучше попытаться уменьшить это до диапазона или чего-то подобного, если вы можете. В ODBC 20000 параметров означают 20000 IPD и APD, и они представляют собой довольно большие структуры. Поскольку библиотека DB2 Cli очень похожа на ODBC, я бы предположил, что вы съедите много памяти.

Учитывая, что 20 000 вызывает отрицательные проблемы, а 5 000 - нет, где-то в системе есть 16-разрядное целое число со знаком, и поэтому верхняя граница составляет примерно 16383.

Однако ограничение зависит от базовой СУБД и API, используемого модулем DBD для СУБД (и, возможно, самого кода DBD); это не затронуто DBI.

Вы уверены, что это лучший способ справиться с вашей проблемой?

Другие вопросы по тегам