Имеем такой код: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, в которой опять же
устанавливается соединение с той же БД и выполняется запрос,
что не есть хорошо...
Как установить один раз соединение с БД и потом просто делать запросы
из разных процедур?