|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Konstantin Tokar 2:5020/400 21 Nov 2003 01:53:44 To : Alexey Mahotkin Subject : Re: perl или c#? -------------------------------------------------------------------------------- > KT> Аргумент можно привести другой - указание списка столбцов позволит > KT> использовать bind() > > И каждый раз синхронизировать набор переменных? Ты что, в функции > передаёшь количество параметров по количеству полей, а не один хэш на любую > строку датасета? Когда как, строки датасета вообще не всегда надо передавать куда-то. Передача параметров как hashref в функцию потенциально опасно - "Currently, a new hash reference is returned for each row. This will change in the future to return the same hash ref each time, so don't rely on the current behaviour.", тем более что в нынешней реализации всё работает, а в будущей может возникнуть проблема. А если хочется хэш, можно в крайнем случае сделать как в perldoc DBI: $sth->execute; my %row; $sth->bind_columns( \( @row{ @{$sth->{NAME_lc} } } )); while ($sth->fetch) { print "$row{region}: $row{sales}\n"; } только это в смысле производительности не имеет смысла. Использование bind_columns даёт серьёзное увеличение производительности. $sth = $dbh->prepare_cached('select a, b, c from t'); $sth->execute() || die($dbh->errstr); $sth->bind_columns(\$a, \$b, \$c); while ($sth->fetch) { } работает в 2 раза быстрее, чем аналог с fetchrow_hashref , и это только при трех столбцах. --- ifmail v.2.15dev5.1 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/6577c7b5f638.html, оценка из 5, голосов 10
|