[sgbd] [Oracle] Pb d'execution d'une requete
Bonjour,
J'execute une requete de mise a jour, mais la modification n'est pas prise en compte.
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| my $res = FONCTION->bd_change($login, $pass, "update table set champ1='$champ1', champ2='$champ2' where gen_id=$gen_id");
print "REQUETE : update table set champ1='$champ1', champ2='$champ2' where gen_id=$gen_id";
if ($res ne 'ok')
{
print " <i>Impossible add</i>";
}
else
{
print " <i>Confirmed add</i>";
} |
Et le code de la fonction bd_change :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| sub bd_change{
my $login = $_[1];
my $pass = $_[2];
$dbh = DBI->connect('Dbi:Oracle:',$login,$pass,{
PrintError => 1, # warn() on errors
RaiseError => 0, # don't die on error
AutoCommit => 0, # don't commit executes immediately
}) ;#or die "ERROR : couldn't connect to database ", DBI::errstr;
my $sql = $_[3];
if ($dbh)
{
my $nb = $dbh->do($sql) or warn "le do ne marche pas dans bd_change\n";
$dbh->commit;
$dbh->disconnect();
if ($nb ne 0)
{
return ("ok");
}
else
{
return "error2";}
}
else
{
return ("error");
}
} |
J'ai fait un print de la requete comme indiqué dans le 1er code, et la requete s'affiche correctement. Lorsque je fais un copier-coller pour la traiter directement avec Oracle, ca marche bien.
Apparement, $nb est vide. Je l'ai fait affiché, et rien n'apparait...
Merci