Так я нахожу количество и имена колонок при работе с Oracle и mySQL:
Код:
use DBI;
my $dbh = DBI->connect("реквезиты базы данных") || die print "$DBI::errstr\n";
my $query = "какой-недь запрос";
my $sth = $dbh->prepare($query) || die print "$DBI::errstr\n";
$sth->execute || die print "$DBI::errstr\n";
my $col_cnt = $#{$sth->{NAME}};
my @columns = [];
for (my $i = 0; $i <= $col_cnt; $i++) { $columns[$i] = $sth->{NAME}->[$i]; }
...
$sth->finish();
$dbh->disconnect();
Насчет Postgres все еще ничего сказать не могу...