
| |||
![]() Hola a todos, me gustaria saber si alguien sabe como conectar una base de datos de Oracle que se encuentra en un servidor remoto con una alicación perl que corre localmnte. Gracias. ![]() |
| ||||
Hola, fijate que en PERL te conectas con el módulo DBI a cualquier base de datos de cualquier servidor, tenés que pasarle los parámetros correctos y ya... Al pasarle el parámetro del driver de la base de datos, tienes que previamente tenerlo instalado en la PC donde se ejecuta el script para que funcione... El el parámetro host colocás la IP del servidor de la base de datos y ya... http://search.cpan.org/~timb/DBI-1.52/DBI.pm http://search.cpan.org/~pythian/DBD-....18a/Oracle.pm Saludos
__________________ Esteban Quintana |
| |||
Hola, gracias por tu respuesta. Mira lo que pasa es que yo tengo instalados los módulos DBI de Oracle en la maquina en la cual se ejecutan los scripts de Perl, pero al ejecutar sale en el archivo de error de apache el siguiente error: Perhaps the capitalisation of DBD 'oracle' isn't right. at ConectarDB_O.pm line 15 La conexión a la BD la estoy haciendo mediante un modulo llamado ConectarDB_O.pm. Si me puedes ayudar, te agradeceria. |
| |||
Mira aqui te envio dos intentos que he hecho para tratar de conectarme con la BD Oracle. El primero es un módulo de perl en el cual estoy definiendo la conexión. El segundo es un script completo en el cual estoy definiendo tanto la conexión como la consulta de la BD. Cualquier ayuda se las agradezco. Ejercicio de prueba 1: #!/usr/bin/perl -w package ConectarDB_O; use strict; use DBI; # variables a editar my $db_user = "curso3"; my $db_pass = "curso3"; my $host_name = "mig"; my $db_name = "sbmig"; # vars my $q_string = "DBI:oracle:host=$host_name;sid=mig;port=1521;data base=$db_name"; sub connect{ return (DBI->connect ($q_string, $db_user, $db_pass, {PrintError => 0, RaiseError => 1})); } 1; Ejercicio de prueba 2: #!c:\perl\bin\perl.exe -w $qry = new CGI; print header(); print start_html(); use strict; use DBI; #$dbh = DBI->connect('dbi:Oracle:host=mig;sid=sbmig;port:1521' ,'curso3','curso3',''); $dbh = DBI->connect('dbi:Oracle:', q{curso3/curso3@(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST= mig)(PORT=1521)) (CONNECT_DATA=(SID=sbmig)))}, "") $sth = $dbh->prepare ("SELECT * FROM empleados WHERE cargo=?"); $cia = $qry->param ("PRESIDENTE"); $sth->execute ($cia ) ; while(@consulta=$sth->fetchrow_array()){ print "Id: ".$consulta[0]." Nombre: ".$consulta[1]." Apellido: ".$consulta[2]." Direccion: ".$consulta[3]." Telefono: ".$consulta[4]; } $sth->finish; print end_html(); PD: Hago la aclaración que tengo instalado el modulo de perl DBD::Oracle. Gracias |
| ||||
host=mig mig es un host ? o ponés el IP ahí ? porque si es un host faltaría el dominio de la red... y en $dbh = DBI->connect('dbi:Oracle:host=mig;sid=sbmig;port:152 1' ,'curso3','curso3',''); Está mal, es dbi:DriverName:database=database_name;host=hostnam e;port=port No puedes cambiar de lugar el host con la database... checkea bien como conectarte en http://search.cpan.org/~timb/DBI-1.52/DBI.pm#connect Saludos
__________________ Esteban Quintana |
| |||
Hola, muchas gracias por tu ayuda, efectivamente tenia mal el orden de las cosas y me faltaba agregarle el dominio al host. Igual subo el modulo de perl para la conexión con Oracle, depronto puede ser de gran ayuda para alguien mas que tenga el mismo problema que yo. Miles de gracias.... ConectarDB_O.pm #!/usr/bin/perl -w package ConectarDB_O; use strict; use DBI; # variables a editar my $db_user = "curso3"; my $db_pass = "curso3"; my $host_name = "mig.isb.com"; my $db_name = "sbmig"; my $sid = "sbmig"; # vars my $q_string = "DBI:Oracle:database=$db_name;host=$host_name;sid= $sid;port=1521"; sub connect{ return (DBI->connect ($q_string, $db_user, $db_pass, {PrintError => 0, RaiseError => 1})); } 1; Consultar_O.pl #!c:\perl\bin\perl.exe -w use CGI qw/:all/; use ConectarDB_O; print header(); print start_html(); my($dbh,$sth); $dbh=ConectarDB_O->connect(); $sth=$dbh->prepare('SELECT * FROM empleados WHERE cargo=?'); $sth->execute("PRESIDENTE"); while(@consulta=$sth->fetchrow_array()){ print "Id: ".$consulta[0]." Nombre: ".$consulta[1]." Apellido: ".$consulta[2]." Direccion: ".$consulta[3]." Telefono: ".$consulta[4]; } $sth->finish; $dbh->disconnect; print end_html(); |