• Publicidad

Comparar variables en tablas de BD

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Comparar variables en tablas de BD

Notapor thegame » 2011-11-23 12:43 @572

Hola, estoy aquí porque necesito ayuda de Uds. Tengo una variable que necesito comparar en varias tablas de una BD... es decir, en la variable tengo una palabra que necesito que las busque en unas tablas (usuario, sede, etc), pero no sé cómo hacerlo. Intenté haciendo con Perl un if(), pero no me busca en las tablas.

También con un case pero no sé cómo hacer en el case que si no encuentra en un tabla busque en la otra, es decir, me haga un print() encuentre o no en la tabla... Por favor, si me pueden decir más o menos cómo se hace.

Gracias.
Última edición por explorer el 2011-11-23 15:44 @697, editado 1 vez en total
Razón: Quitar abreviaturas: esto es un foro, no un teléfono móvil
thegame
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 38
Registrado: 2011-11-08 11:19 @513
Ubicación: Venezuela

Publicidad

Re: Comparar variables en tablas de BD

Notapor explorer » 2011-11-23 15:47 @699

¿No puedes poner algo del código que tienes hecho?
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12854
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Comparar variables en tablas de BD

Notapor thegame » 2011-11-23 16:17 @720

Esto fue lo último que intenté con un Switch/Case.... lo que quiero es que esa variable pase por las tablas, cuando consiga una igual se la traiga y luego la mostraré, y sino está en la tabla que pase a la siguiente.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub Min {
  2.     my $dbh = DBI->connect( "DBI:Pg:dbname=directorio;host=10.16.105.174;port=5432" . "directorio",
  3.         "directorio", "directorio" );
  4.     my $sth = $dbh->prepare("SELECT name FROM institucion WHERE name=?");
  5.     $sth->execute( $obj->{traerinfo} );
  6.     @row1 = $sth->fetchrow_array;
  7.     return \@row1;
  8. }
  9.  
  10. sub Nombre {
  11.     my $dbh = DBI->connect( "DBI:Pg:dbname=directorio;host=10.16.105.174;port=5432" . "directorio",
  12.         "directorio", "directorio" );
  13.     my $sth = $dbh->prepare("SELECT first_name FROM customer_user WHERE first_name=?");
  14.     $sth->execute( $obj->{traerinfo} );
  15.     @row1 = $sth->fetchrow_array;
  16.     return \@row1;
  17. }
  18.  
  19. sub traerinfo {
  20.     $obj = shift;
  21.     $obj->{traerinfo} = shift if @_;
  22.     my @row1;
  23.  
  24.     switch ( $obj->{traerinfo} ) {
  25.         case ( \&Min )    { print "@row1,Es un Ministerio" }
  26.         case ( \&Nombre ) { print "@row1, Es un Nombre" }
  27.     }
  28.  
  29. }
  30.  
Coloreado en 0.009 segundos, usando GeSHi 1.0.8.4
Última edición por explorer el 2011-11-23 18:39 @819, editado 1 vez en total
Razón: Quitar abreviaturas: esto es un foro, no un teléfono móvil. Formateado con Perltidy. Marcas Perl.
thegame
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 38
Registrado: 2011-11-08 11:19 @513
Ubicación: Venezuela

Re: Comparar variables en tablas de BD

Notapor explorer » 2011-11-23 18:55 @830

Yo veo que @row1 está declarada dentro de la subrutina traerinfo().

Juraría que debería estar declarada fuera de las subrutinas, para que sean conocidas por todas. Me suena que hay una excepción al caso, pero no me acuerdo de cuál era.

Pues eso... la línea 22 debería estar en la línea 1 (antes de).

Por otra parte, no uses el módulo Switch. Está lleno de errores. Tantos, que ha sido eliminado de los últimas distribuciones de Perl. Es mejor usar el given/when que existe a partir de Perl v5.10.

Se podría hacer así, también:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $dbh = DBI->connect(
  2.     "DBI:Pg:dbname=directorio;host=10.16.105.174;port=5432",
  3.     "usuario", "contraseña",
  4. );
  5.  
  6. my @tablas = qw(institucion customer_user);    # nombres de las tablas
  7. my @campos = qw(name        first_name   );    # campos dentro de esas tablas
  8.  
  9. my $buscamos = 'Pedro';
  10.  
  11. for(my $i = 0; $i < @tablas; $i++) {           # para todas las tablas...
  12.  
  13.     my $sth = $dbh->prepare("SELECT $campos[$i] FROM $tablas[$i] WHERE $campos[$i]=?");
  14.  
  15.     $sth->execute( $buscamos );
  16.  
  17.     my @row = $sth->fetchrow_array;
  18.  
  19.     if (@row) {
  20.         print "Resultado: [@row] en $tablas[$i].\n";
  21.         last;                                   # salimos del bucle for()
  22.     }
  23. }
  24.  
  25. print "Fin de la búsqueda de [$buscamos].\n";
  26.  
  27.  
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12854
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Comparar variables en tablas de BD

Notapor thegame » 2011-11-24 08:56 @414

Gracias, me sirvió.
thegame
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 38
Registrado: 2011-11-08 11:19 @513
Ubicación: Venezuela


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado