Problem when calling stored procedure

"Pierre Hainard" <[email protected]> Sun, 4 Nov 2007 17:44:05 +0100
Newsgroups gmane.comp.db.mysql.perl
Message-ID <001801c81f01$ea6735c0$0201a8c0@papa>
Hello
I try to read a stored procedure p1 from a table listproc in database test_texte and use it after giving a value to her parameters in an other database.

#/usr/bin/perl

use strict;
use warnings;
use DBI;

my @linproc;
my $user = 'papa';my $password = 'pa3418';
my $para1;my $para2;

my $dbh_1 = DBI->connect ("dbi:mysql:test_texte",$user,$password,
 {RaiseError => 1, PrintError => 1})
 or die "can't connect ($DBI::errstr)\n";

my $sth_1 = $dbh_1->prepare("SELECT Liste FROM listeproc");
$sth_1->execute;
my $cont = 0;
while ($linproc[$cont] = $sth_1->fetchrow_array ) {
 $cont++;
      }
print "linproc[0] is : $linproc[0]";
$dbh_1->disconnect;

my $dbh = DBI->connect ("dbi:mysql:test",$user,$password,
 {RaiseError => 1, PrintError => 1})
 or die "can't connect ($DBI::errstr)\n";


#
# Calling the procedure
$para1 = 10;$para2 = 12;
my $procedure = "CALL p1($para1,$para2)";


#this one does  work 
my $sth = $dbh->prepare($procedure);
#this one does not work  why ??
#my $sth = $dbh->prepare({$linproc[0]});
$sth->execute();

my $more_results;
my $count = 0;
do {
    $count++;
    print "\ndonnees $count\n";
    my $names = $sth->{NAME};
    print_line($names); 
    print_line([map {'-' x length $_} @$names]); 
    my $rows = $sth->fetchall_arrayref();
    print_line ($_) for @$rows; 
} while ( $more_results = $sth->more_results);

$dbh->disconnect;

sub print_line {
    my ($line) = @_;
    print q{  }, join(q{ }, map {sprintf '%-12s', $_} @$line),"\n";
}

sleep(20);

Meilleures salutations


Pierre Hainard
Chalet 15
CH-2300 La Chaux de Fonds
[email protected]