Bonjour,

J'execute une requete de mise a jour, mais la modification n'est pas prise en compte.

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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