[SP-pm] UMA DUVIDA?
Luis Motta Campos
luismottacampos em yahoo.co.uk
Quarta Maio 30 00:36:39 PDT 2007
On May 30, 2007, at 12:09 AM, Manoel Marcos da Silva wrote:
> Obrigado Gabriel , to iniciando mesmo com PERL minhas duvidas são
> bem basicas mas funcionou suas dicas, veja:
>
> #!/usr/bin/perl
> print "Programa teste\n";
> $dbh = DBI->connect("dbi:Oracle:$xxxx", $xx, $xx);
>
> Can't locate object method "connect" via package "DBI" (perhaps you
> forgot to load "DBI"?) at cor line 6.
>
> sera que falta alguma instalação no servidor?!?
Faltam muitas coisas.
Vamos começar com o módulo DBI, que você precisa carregar:
#!/usr/bin/perl
use warnings; # IMPORTANTE: ajuda para novatos.
use strict; # MAIS IMPORTANTE: sanidade mental para todas as
idades.
use Data::Dumper; # Para imprimir os dados sem muito trabalho
use DBI; # Indispensável para acessar bases de dados ;-)
# Esta linha REQUER que você tenha instalado com sucesso o módulo
DBD::Oracle.
my $dbh = DBI->connect( 'dbi:Oracle:DatabaseName', 'user',
'secret' );
die $dbh->errstr unless $dbh; # isto é tratamento de erro, do mais
simples.
my $statement;
eval {
my $query = q{SELECT * FROM USER_TABLES};
$statement = $dbh->prepare( $query );
$statement->execute;
};
die if $@; # isto é tratamento de erro, dos mais simples, de novo.
eval { # Use eval() aqui para prevenir falhas durante a leitura
dos dados.
# usa um Oracle Cursor, percorre o DataSet devolvido pela query.
while( my $row = $statement->fetchrow_hashref ) {
# Aqui você pode fazer alguma coisa com os seus dados.
# imprimir, por exemplo:
print Dumper( $row ), $/;
}
};
die if $@; # tratamento de erros
eval {
$statement->finish; # Desaloque os recursos usados.
$dbh->disconnect; # Seja explícito, ou o Oracle te morde!
};
die if $@; # tratamento de erros, não esquece!
__END__
Leitura recomendada para compreendeer este programa:
perldoc DBI
perldoc DBD::Oracle
perldoc strict
perldoc warnings
perldoc Data::Dumper
perldoc -f print
perldoc -f die
perldoc -f eval
perldoc -f my
perldoc perlvar (procure por "$INPUT_RECORD_SEPARATOR" no texto, é
a descrição de "$/").
Se você tiver perguntas, vou ficar contente em responder.
> mas consigo connectar usando so os comandos shell que ja me ajuda
> no momento:
>
> #!/usr/bin/perl
> print "Programa teste\n";
> exec("sqlplus xx/xx em xxxx");
>
> SQL*Plus: Release 9.2.0.1.0 - Production on Tue May 29 19:10:46 2007
> Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
> Connected to:
> Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
> With the Partitioning, OLAP and Oracle Data Mining options
> JServer Release 9.2.0.1.0 - Production
> SQL>
>
>
> porem , se ja executo a query , o programa roda com sucesso mas
> como faço pra gravar o sresultado da query num arquivo ?
NUNCA FAÇA ISSO. Perl não é Bash.
Para gravar dados, você precisa ler sobre o comando "open":
perldoc -f open
Eu espero que você tenha perguntas.
Conversamos sobre isso na próxima mensagem.
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, Certified Oracle Database Administrator,
and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão SaoPaulo-pm