Tags : RETRURNING, HFSQL, SQL
16 janvier 2024
publié par 

Il s'agit d'une nouveauté très pratique lorsque vous utilisez des requêtes INSERT, UPDATE ou DELETE. En effet, avec RETURNING, vous pouvez renvoyer une valeur pour chacun des enregistrements traités par la requête.

Cela peut être l'identifiant automatique dans le cas d'un INSERT pour connaitre l'identifiant de l'enregistrement ajouté, une rubrique calculée pour récupérer une valeur modifiée lors de la requête UDPATE. Enfin, la liste des enregistrements supprimés lors d'une requête DELETE.

Par ailleurs, en utilisant HNbEnr() sur la requête exécutée, vous pourrez connaitre le nombre d'enregistrement concernés.


Exemple pour une suppression de client dans un fichier :

 

 

sListeIdSuppr est une chaîne
ReqReturnSuppr est une Requête SQL =
[
DELETE FROM CLIENT
WHERE CODEPOSTAL = '75000'
RETURNING CLIENT.IDCLIENT AS ID
]

// On exécute la requête
HExécuteRequête(ReqReturnSuppr)
Info(HNbEnr(ReqReturnSuppr)+" Enregistrements supprimés.")

// Parcours de la requête

POUR TOUT ReqReturnSuppr
sListeIdSuppr += [";"]+ReqReturnSuppr.ID
FIN


Info("Liste des identifiants supprimés : ",+sListeIdSuppr)

 

< Retour

3 commentaires

Adriano Boller
16/01/2024 - 16:06  - Répondre
It is very Good

Jean-Marc VELO
08/08/2024 - 15:14  - Répondre
C'est une fonctionnalité intéressante mais qui ne semble pas fonctionner correctement, ou alors je ne fais pas ce qu'il faut... Le code suivant me retourne bien le bon nombre d'enreg supprimés par HNbEnr, mais le parcours me donne toujours l'ID du dernier enregistrement supprimé : dataLog est une Requête SQL = [ DELETE FROM Log_Import WHERE Log_Import.DateImport = {_ParamDateImport} AND Log_Import.HeureImport = {_ParamHeureImport} RETURNING Log_Import.IDLog_Import AS IDSuppr ] dataLog._ParamDateImport = SAI_DateHF dataLog._ParamHeureImport = SAI_HeureHF SI HExécuteRequêteSQL(dataLog) ALORS Trace(HNbEnr(dataLog)+" enreg supprimés") POUR TOUT dataLog Trace(dataLog.IDSuppr) FIN FIN

Jean-Marc VELO
08/08/2024 - 15:45  - Répondre
Petite précision, cela fonctionne bien avec les UPDATE et INSERT mais pas avec les DELETE (version HFSQL 290088b)

Publier un commentaire : 
Votre adresse email ne sera pas publiée