Каков максимальный 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.
Вы уверены, что это лучший способ справиться с вашей проблемой?