[Moscow.pm] DBI и метод, возвращающий 1 значение

Dmitry Karasik dmitry на karasik.eu.org
Чт Дек 15 03:33:09 PST 2011


я может чего не понял, но вот это разве не оно?

($x) = $dbh-> selectrow_array('SELECT 1')
$x   = ($dbh-> selectrow_array('SELECT 1'))[0]

/dk

On Thu, Dec 15, 2011 at 03:20:14PM +0400, Nikolay Mishin wrote:
> Hi Miscow-pm
> 
> не для кого не секрет, что часто, при обращении к базе данных возвращается только 1 значение , скажем 
> count и мы пишем процедуру:
> sub get_one_value_from_db {
>     my $dbh             = shift;
>     my $cob_date        = shift;
>     my $persent_load_sql = shift;
> 
>     my $pst_sth = $dbh->prepare($persent_load_sql);
>     $pst_sth->execute($cob_date);
>     my $cnt_today = $pst_sth->fetchrow_array();
> 
>     return $cnt_today;
> }
> 
> вопрос, почему в модуле DBI 
> просто нет метода, который возвращал бы значение, если ему передать
> 1.  коннект
> 2. sql
> 3. значение для инициализации
> my $value = get_one_value_from_db( $dbh, $ref_source_data->{get_cnt_load_log},$cob_date);
> ну и потом , чтобы в качестве параметров можно было передавать ссылку на массив,
> если в запросе в условие where нужно вставлять более 1 значения
> my $value = get_one_value_from_db( $dbh, $ref_source_data->{get_cnt_load_log},\@many_param);
> 
> Вопрос: 
> 1. почему уже нет такой функции?
> 2. может посоветуете модуль, где она есть,
> просто чует мое сердце, что это уже 1000 раз написано,
> Спасибо!
> 
> p.s. это не важно, но sql nfrjq
> $ref_source_data->{get_cnt_load_log}='
> SELECT   COUNT (time_stamp) cnt
>   FROM   my_table,
>          (SELECT   TO_DATE (?, 'yyyy-mm-dd') + 2 cd FROM DUAL) dt
>  WHERE   time_stamp BETWEEN dt.cd AND dt.cd + 1
> ';
> --
> Nikolay Mishin
> -- 
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org

-- 
Sincerely,
	Dmitry Karasik



Подробная информация о списке рассылки Moscow-pm