Boletim ViaLinuxis: seu caminho para o Linux
Jorge Kinoshita

select_row - tratamento de SELECT usando Perl-DBI

(un)subscribe
3-8-00


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