Perl — полезные методы DBI

Я замечал и за собой, и за другими стремление делать надстройки над DBI, добавляя вроде бы полезные методы для извлечения данных. Почти все такие методы, как оказалось, в DBI уже есть, хотя частенько они замаскированы. Например метод $dbh->selectall_arrayref возвращает массив массивов, а может и массив хэшей, вызванный в форме
[cc lang=»perl»]$dbh->selectall_arrayref($query, {Slice=>{}},);[/cc]
и не только это, как и его близнец $sth->fetchall_arrayref().

Я же сделал когда-то свою реализацию такого поведения, и до сих пор не везде смог от неё избавиться. И если бы это было только у меня, таких «доделок» море. Может быть, даже каждый начинающий перловик этим грешит, пока не дорастёт до создания своего ORM (тоже очень распространённое времяпрепровождение).

selectcol_arrayref

Возвращает ссылку на список значений из первого столбца.

[cc lang=»perl»]
$ary_ref = $dbh->selectcol_arrayref($statement);
$ary_ref = $dbh->selectcol_arrayref($statement, \%attr);
$ary_ref = $dbh->selectcol_arrayref($statement, \%attr, @bind_values);
[/cc]
А если вызвать по-другому, то возвратит массив , в котором будут лежать подряд и другие указанные столбцы:
[cc lang=»perl»]
# в массиве будут значения [id1, name1, id2, name2, …]
my $ary_ref = $dbh->selectcol_arrayref(«select id, name from table», { Columns=>[1,2] });
my %hash = @$ary_ref; # делаем хэш {id=>name}
[/cc]
… продолжение следует

Leave a Reply