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.
Lorsque j'exécute un INSERT ou un UPDATE, RowsAffected contient bien le nombre de lignes ajoutées/modifiées.
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'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 :
Merci a ceux qui auront une idée!
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)
Partager