Цитата: почему? в чем разница?
#Знакомы с понятием "черный ящик"?
что такое, скажем, selectall_arrayref:
prepare
execute(@params)
Slice ? Slice : []
MaxRows ? { fetchall_arrayref; finish} : fetchall_arrayref
Теперь далее, знаем, что СуБД крупные ответы выдает не сразу, кусками в течении некоторого времени.
В случае с prepare/execute/while(bla=fetchrow_arrayref) мы разбираем также постепенно данный ответ, дополняя сразу необходимую структуру. Все конкатерации, все обработки в своих ф-циях и т.д. (т.е. операции, которые приводят к дублированию памяти, почитайте, про утечки в перле есть статьи даже на русском) дадут дублирование только для маленьких порций данных.
В случае с selectall_arryref, для обработки придет уже ссылка на весь блок данных, который уже и предстоит дозатачивать.
Цитата: DBIx::Class Firebird не поддердживает, хотел на ней писать
дело в том что в моей программе есть много запросов которые там не сделать, это массивы SQL и т.д.
Хмм, однако, не знал про Файрбёрд, хотя все равно пользую только Оракл и Постгрес сейчас.
Динамическая генерация запроса + все та же параметризация (только динамическая же подготовка параметров). Я подобные вещи делал, в принципе, хоть и немного в другой ипостаси.
В любом случае, решать вам
Цитата: я предпочитаю SQL::Abstract!
вот посмотрие как я написал класс CRUD для SQL::Abstract: http://www.lissyara.su/?id=1962 зеркало http://unixforum.org.ua/index.php?topic=26299
Не совсем то, что хотел увидеть, но авось интересные идеи и найду.
ЗЫ: судя по стилю сообщений и crud/catalyst могу предположить, что вы gcc/винград?