[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