Bonjour a tous!

J'ai un petit problème, je vais tâcher de l'expliquer avec un exemple bateau:

J'utilise Oracle 9 via le BDE.

J'ai un TEdit, un TDataBase et un TQuery.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 Query->Active = false ;
 Query->SQL->Clear() ;
 Query->SQL->Add( Edit1->Text ) ;
 Query->ExecSQL() ;
 ShowMessage( "Rows Affected: " + IntToStr(Query1->RowsAffected ));
Lorsque j'exécute un INSERT ou un UPDATE, RowsAffected contient bien le nombre de lignes ajoutées/modifiées.

Lorsque j'utilise une instruction MERGE par contre, RowsAffected contient toujours la valeur -1.

Ma question est donc assez simple : comment récupérer le nombre de lignes ajoutées/modifiées par l'instruction MERGE (puisque RowsAffected ne fonctionne pas).

Pour info pour ceux qui ne savent pas, une fonction MERGE est une fonction qui réalise soit un INSERT soit un UPDATE selon le cas, et ca ressemble à ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
MERGE INTO PERSONNE T1
  USING (SELECT 'DDD' NOM , 'DD' PRENOM , '04/04/2004' DATE_NAISS FROM dual) s
    ON ( 
          T1.nom         = s.nom AND
          T1.prenom      = s.prenom  AND
          T1.date_naiss  = s.date_naiss
       ) -- Condition de correspondance
WHEN MATCHED THEN -- Si Vraie
  UPDATE SET VILLE= 'MARSEILLE',  taille = 185
WHEN NOT MATCHED THEN -- Si faux
  INSERT ( ID_PERSONNE, NOM, PRENOM,DATE_NAISS, VILLE, TAILLE )
 VALUES ( 20, 'DDD', 'DD', to_date('04/04/2004','DD/MM/YYYY'), 'MARSEILLE',185)
Merci a ceux qui auront une idée!