Имеем такой код:
my $database = "db";
my $hostname = "localhost";
my $port = "3306";
my $user = "user";
my $password = "password";
sub CALC
{
my ($dbh,$sql,$sth);
$dbh = DBI->connect("DBI:mysql:$database:$hostname:$port",$user, $password);
$sql = "SELECT count(*),round(sum(a)),round(sum(b))";
$sql .= "FROM qwe";
$sql .= "GROUP BY 'c'";
$sth = $dbh->prepare($sql);
$sth->execute;
return $sth->fetchrow_array();
$sth->finish;
$dbh->disconnect;
}
sub SELECT
{
my ($dbh,$sql,$sth,$n,$a,$b);
$dbh = DBI->connect("DBI:mysql:$database:$hostname:$port",$user, $password);
$sql = "SELECT x,y FROM z";
$sth = $dbh->prepare($sql);
$sth->execute;
while ( ($x,$y) = $sth->fetchrow() )
{
($n,$a,$b)=CALC;
}
$sth->finish;
$dbh->disconnect;
}
&SELECT;
Получается, что сначала устанавливается соедиинение с базой в
процедуре SELECT, выполняется запрос к БД, и по мере возврата значений,
для каждой строки выполняется процедура CALC, в которой опять же
устанавливается соединение с той же БД и выполняется запрос,
что не есть хорошо...
Как установить один раз соединение с БД и потом просто делать запросы
из разных процедур?
Ответ на:
комментарий
от friday
Ответ на:
комментарий
от Legioner
Ответ на:
комментарий
от Warrior_Of_The_Light
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум perl+dbi, передача dbh в функцию (2008)
- Форум perl DBI mysql вопрос про finish() (2010)
- Форум Неблокирующие запросы к БД (2012)
- Форум perl и mysql (2017)
- Форум perl+mysql название столбцов таблицы (2010)
- Форум Начинаю учить Perl (2014)
- Форум PERL + 2 mysql import (2008)
- Форум Perl mysql (2009)
- Форум -->Perl-->DBI-->Oracle--> (2002)
- Форум Postgresql Perl SQL-injection (2011)