• Publicidad

Retorno de store procedure en MYSQL

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

Retorno de store procedure en MYSQL

Notapor aidewuado » 2013-02-04 10:48 @492

Hola, ¿cómo están?

Aquí traigo otro problema que se me está dando, según yo la sintaxis es correcta.

Al grano: el script se conecta a una base de datos y ejecuta un store procedure (SP) de MySQL. El problema es que no sé por qué se cae cuando trato de capturar el retorno del SP.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4. use DBI;
  5.  
  6. my $usuario="root";
  7. my $pass="";
  8.  
  9. my $host="localhost";
  10. my $db_name="edo";
  11.  
  12. my $string_coneccion= "DBI:mysql:host=$host;database=$db_name";
  13.  
  14. my $db_1 = DBI->connect ("$string_coneccion","$usuario","$pass") or die "no conecta";
  15.  
  16. #my $query = $db_1 -> prepare('select * from rutas_archivos;') or die ("Error al consultar informe: ");
  17.  
  18. my $query = $db_1 -> prepare('call lee_rutas();') or die ("Error al consultar informe: ");
  19. $query->execute();
  20. my @data;
  21. open (SALIDA,">/home/scrip_perl/ruta.txt");
  22.  
  23. while(@data = $query-> fetchrow_array())
  24. {
  25.         #$data[0] = '';
  26.         #$data[1] = '';
  27.         print SALIDA $data[0]."\n";
  28. }
  29.  
  30. close(SALIDA);
  31. $query-> finish;
  32.  
  33. $db_1->disconnect;
  34.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


El SP es simple: hace un select de una tabla y ya, si lo ejecuto del MySQL corre perfectamente
Sintáxis: [ Descargar ] [ Ocultar ]
Using sql Syntax Highlighting
  1. BEGIN
  2.         SELECT ruta FROM rutas_archivos
  3.         LIMIT 1;
  4.  
  5. END
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Este es el error que me da:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1. perl mueve_archivos.pl
  2. DBD::mysql::st execute failed: PROCEDURE edo.lee_rutas can't return a result set in the given context at mueve_archivos.pl line 19.
  3. DBD::mysql::st fetchrow_array failed: fetch() without execute() at mueve_archivos.pl line 23.
  4. [root@localhost scrip_perl]#
  5.  
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
aidewuado
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2012-02-02 15:48 @700

Publicidad

Re: Retorno de store procedure en MYSQL

Notapor explorer » 2013-02-04 20:34 @899

Pues no lo sé, porque los ejemplos que he encontrado en Internet muestran casi el mismo código, salvo que usan bind() para enlazar los datos de vuelta o los argumentos a pasar al procedimiento.

Hay un ejemplo en la propia página de manual de DBD::mysql, en la sección MULTIPLE RESULT SETS.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Retorno de store procedure en MYSQL

Notapor aidewuado » 2013-02-27 14:22 @640

Traté, pero al final preferí ocupar una query. Gracias, explorer.
aidewuado
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2012-02-02 15:48 @700


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 32 invitados