Comment effectuer un blocage d`enregistrements en transaction sur une base tierce ?
| |
La méthode à utiliser pour effectuer des blocage en transaction va être dépendante du type de programmation : Cas 1 : programmation avec des fonctions SQL* : Le blocage va être fait par un appel de la fonction "SQLBloque()", dans une transaction. Le code est du type : SQLConnecte(...) SQLTransaction(SQL.Début) // Sans préciser de connexion SQLBloque(SELECT * FROM Table WHERE ...) SQLTransaction(SQL.Fin) // COMMIT Attention, la connexion dans ce cas est obligatoirement faite via la fonction "SQLConnecte()". Une connexion faite dans l`analyse, ou avec "HOuvreConnexion()" ne peut pas être utilisée par la fonction "SQLBloque()". Cas 2 : programmation avec des fonctions H* : Le blocage peut être fait par une requête SQL qui doit contenir les ordres de blocages spécifiques à la base. Le code est du type : Req est une source de données SQLTransaction(SQL.Début, "NomConnexion") HExecuteRequeteSQL(Req, "NomConnexion", hRequeteSansCorrection, "SELECT * FROM ...") SQLTransaction(SQL.Fin, "NomConnexion") // COMMIT La connexion "NomConnexion" peut être la connexion décrite dans l`analyse, ou une connexion donnée par programmation avec "HDécritConnexion()" et/ou "HOuvreConnexion()". Attention, la requête donnée à la fonction "HExecuteRequeteSQL()" doit contenir les instructions de blocages relatives à la base. Notez que la fonction "SQLTransaction()" est l`unique fonction dont le nom commence par "SQL", et qui peut être utilisée dans un traitement utilisant les fonctions H*. L`option hBlocageEcriture des fonctions HLitPremier, HLitSuivant est également prise en compte en accès natif. |
Source: Freedev