[SP-pm] DBI Metodo Connect

Marcos Carmello mcarmello em gmail.com
Quarta Abril 23 13:52:08 PDT 2008


Boas Monges!

Estou tentando fazer uma conexão Perl->Oracle e estou quaaaaaaase
conseguindo... se não fose pelo "quase" =]

Consegui instalar o DBI, DBD::Oracle sem maiores "problemas" graças a outras
mensagens da lista.

Seguindo informações que coletei também na lista, montei um arquivo simples
para testar a conexão, no entanto um erro persiste: Can't locate object
method "connect" via package "DBI" (perhaps you forgot to load "DBI"?) at
test.pl line 8.

Está ali o comentário da linha: (# Esta linha REQUER que você tenha
instalado com sucesso o módulo DBD::Oracle.) E sim, eu consegui instalar,
inclusive antes de eu instalar tudo dava erro na linha use DBI.

Abaixo o código que estou utilizando:

<code>
#!/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:database', 'usuario', 'senha' );
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__
</code>

Durante o processo de instalação do DBI e DBD::Oracle tive problemas na
instalação sempre na linha do DBI que declarava "DBI 1.52". Entendi que
referia-se a versão e fui no cpan verficar com o comando $DBI::VERSION que
sempre me retorna vazio.

Estou utilizando Debian e meu client Oracle já está instalado e funcionando
(faço conexão com o PHP e tudo ok).

Grato,

-- 
Marcos Carmello
mcarmello em gmail.com
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20080423/64991933/attachment.html 


Mais detalhes sobre a lista de discussão SaoPaulo-pm