Antes um aviso:
A partir de hoje o ViaLinuxis está com uma nova cara. Veja este mesmo boletim em formato html (link no final do email). Aproveite e veja também o índice dos boletins em: http://www.pcs.usp.br/~jkinoshi/bs/i0.html . Agradeço qualquer colaboração ou seja, qualquer crítica construtiva a respeito do novo layout.
O módulo DBI (Database independent interface for Perl) permite que seu script Perl se comunique com um banco de dados SQL (ex: oracle, mysql, etc.).
Se você lida com Perl + SQL já deve ter observado que é comum se ter código mais ou menos assim:
- prepara select e executa.
- para cada linha recebida faça: tratamento específico.
Eu criei a rotina "select_row" com o objetivo de não precisar repetir sempre a mesma estrutura acima. Veja a declaração:
sub select_row {
my $comando = shift;
my $funcao = shift;
$sth = $dbh->prepare($comando);
$sth->execute or die "$DBI::errstr";
while ( @row = $sth->fetchrow_array ) {
&$funcao();
};
$sth->finish;
}
E aqui tem um exemplo de uso:
select_row("select lin,col,id from proj where pai = $codigo", sub {
$antes{$row[0]}{$row[1]} = $row[2] ;
});
Observe que @row deve ser um vetor global. No exemplo, $row[0] corresponde à coluna lin, $row[1] à col e $row[2] à id.
Usando "select_row" você se concentra apenas na query SQL e no "miolo" do tratamento.
^JC