[PERL et DBI] probleme sur bind_param... [TROUVE]

probleme sur bind_param... [TROUVE] [PERL et DBI] - Perl - Programmation

Marsh Posté le 11-01-2005 à 11:38:12    

En perl j'essaye d'appeler un procedure stocker placer sur un server sysbase. Cette derniere possede en argument d'entrée un INTEGER.
 
Malheureusement quand j'essaye d'appeler cette derniere, j'ai un retour d'erreur comme quoi je lui passe un VARCHAR en parametre.
 
Quelqu'un sait il comment preciser le typepage de l'argument passer a une procedure stockée.
 
Exemple:
 
Le champ @param1 de la procedure stocker est de type INTEGER
 
Si je fais comme cela fonctionne:
my $query_tmp = "EXEC get_data \@param1 = 12345 ";
my $statement_tmp = $co->prepare($query_tmp);
$statement_tmp->execute();
 
Si je fais comme cela, cela ne fonctionne pas:
my $query_tmp = "EXEC get_data \@param1 = ? ";
my $data = 12345;
my $statement_tmp = $co->prepare($query_tmp);
$statement_tmp->execute($data);
 
Ou ceci fonctionne encore moins:
my $query_tmp = "EXEC get_data \@param1 = ? ";
my $data = 12345;
my $statement_tmp = $co->prepare($query_tmp);
$statement_tmp->bind_param(1,$data,SQL_INTEGER); # Perl me dit qu'il ne connait pas la definition de SQL_INTEGER
$statement_tmp->execute();
 
 
Merci d'avance...


Message édité par mandracke76 le 11-01-2005 à 14:21:41
Reply

Marsh Posté le 11-01-2005 à 11:38:12   

Reply

Marsh Posté le 11-01-2005 à 14:20:33    

La reponse est:
$statement_tmp->bind_param(1,$data,DBI::SQL_INTEGER);
 

Mandracke76 a écrit :

En perl j'essaye d'appeler un procedure stocker placer sur un server sysbase. Cette derniere possede en argument d'entrée un INTEGER.
 
Malheureusement quand j'essaye d'appeler cette derniere, j'ai un retour d'erreur comme quoi je lui passe un VARCHAR en parametre.
 
Quelqu'un sait il comment preciser le typepage de l'argument passer a une procedure stockée.
 
Exemple:
 
Le champ @param1 de la procedure stocker est de type INTEGER
 
Si je fais comme cela fonctionne:
my $query_tmp = "EXEC get_data \@param1 = 12345 ";
my $statement_tmp = $co->prepare($query_tmp);
$statement_tmp->execute();
 
Si je fais comme cela, cela ne fonctionne pas:
my $query_tmp = "EXEC get_data \@param1 = ? ";
my $data = 12345;
my $statement_tmp = $co->prepare($query_tmp);
$statement_tmp->execute($data);
 
Ou ceci fonctionne encore moins:
my $query_tmp = "EXEC get_data \@param1 = ? ";
my $data = 12345;
my $statement_tmp = $co->prepare($query_tmp);
$statement_tmp->bind_param(1,$data,SQL_INTEGER); # Perl me dit qu'il ne connait pas la definition de SQL_INTEGER
$statement_tmp->execute();
 
 
Merci d'avance...


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed