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;