22 octubre 2003

Acceso a Oracle desde perl 

Conexion a una base de datos oracle sin usar el tnsnames.ora del sistema:
        my $NombreBD="BBDD-PRUEBAS";
        my $user="DBUSER1";
        my $passwd="********";
        my $IP="192.168.2.125";
        my $BD_PORT="1521";
        my $ORACLE_HOME="/opt/oracle/product/9.2.0.1";
        $ENV{ORACLE_HOME}=$ORACLE_HOME;
        $lda = DBI->connect("dbi:Oracle:
                                (description=
                                        (address=
                                                (host=$IP)
                                                (protocol=tcp)
                                                (port=$BD_PORT)
                                        )
                                        (connect_data=
                                                (SERVICE_NAME=$NombreBD)
                                                (SERVER=DEDICATED)
                                        )
                                )",$user,$passwd)
                        or die "No puedo conectar a la base de datos: $DBI::errstr"; 
Llamada a un pl que recibe un parámetro y devuelve un cursor
        my $csr = $lda->prepare_cached(q{
                                BEGIN
                                        :CURSOR := P00_package.NombreDeProcedimientoOFuncion(:PARAMETRO);
                                END;
                        });
        my $sth2;
        $csr->bind_param(":PARAMETRO",$parametro);
        $csr->bind_param_inout(":CURSOR", \$sth2, 0,  { ora_type => ORA_RSET } );
        my $SALIDAORACLE = $csr->execute();
        if (!$SALIDAORACLE){
                print STDERR "Error de ejecucion ".__LINE__."\n";
        }
        my ($var1,$var2,$var3);
        while ( ($var1,$var2,$var3) = $sth2->fetchrow_array ) {
                print "$var1\t$var2\t$var3)\n";
        }
Desconexión de la base de datos
        $lda->disconnect;

Get Firefox!

This page is powered by Blogger. Isn't yours?

GeoURL