> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/french/function-blocks/blocks-reference/input-output/communication/sql-db-operations.md).

# SQL-DB Operations

Ce bloc de fonction vous permet d'effectuer des opérations SQL courantes (INSERT, QUERY, UPDATE, DELETE, EXECUTE) sur une base de données connectée. Il fournit une interface simple pour sélectionner l'opération souhaitée, saisir un nom de table si nécessaire et alimenter les entrées requises via des sockets. Les opérations s'exécutent en arrière-plan pour que l'interface reste réactive.

## 📥 Entrées (sockets) <a href="#inputs" id="inputs"></a>

Selon l'opération SQL sélectionnée, le bloc expose différents sockets d'entrée. Chaque nom listé ci‑dessous correspond à un socket que vous pouvez connecter à d'autres blocs.

Sockets communs à toutes les méthodes

* `Enable`\
  Doit être mis à true pour exécuter l'opération sélectionnée.
* `DB Client`\
  Référence du client de base de données fournie par un bloc de connexion séparé (voir Conseils et astuces).

Sockets par méthode

* INSERT
  * `JSON Data`\
    Données à insérer dans la table sélectionnée (JSON/dictionnaire).
* QUERY
  * `Query String`\
    Chaîne SQL SELECT ou autre requête à exécuter.
* UPDATE
  * `JSON Data`\
    Valeurs de mise à jour (JSON/dictionnaire).
  * `JSON Data(Where Conditions)`\
    Conditions WHERE pour sélectionner les lignes à mettre à jour.
* DELETE
  * `JSON Data(Where Conditions)`\
    Conditions WHERE pour sélectionner les lignes à supprimer.
* EXECUTE
  * `Statement String`\
    Instruction SQL brute à exécuter (à utiliser avec précaution).

Remarque : le bloc affichera ou masquera le contrôle d'entrée `Table Name` en fonction de l'opération choisie.

## 📤 Sorties (sockets) <a href="#outputs" id="outputs"></a>

* `Output Data`\
  Retourne le résultat de l'opération (par exemple les lignes d'une requête, informations sur les lignes affectées, ou données spécifiques à l'opération).
* `Success?`\
  Booléen indiquant si l'opération s'est terminée avec succès.

## 🕹️ Contrôles (widgets) <a href="#controls" id="controls"></a>

* `Select SQL Operation`\
  Menu déroulant pour choisir parmi : INSERT / QUERY / UPDATE / DELETE / EXECUTE. Le changement met à jour les sockets d'entrée disponibles pour correspondre à l'opération choisie.
* `Table Name`\
  Champ texte pour le nom de la table cible. Masqué automatiquement lorsque non requis (par exemple avec `EXECUTE`).

## ⚙️ Mécanisme d'exécution <a href="#running-mechanism" id="running-mechanism"></a>

* Le bloc ne s'exécute que lorsque le socket `Enable` reçoit la valeur true.
* Il nécessite un socket `DB Client` valide connecté (généralement fourni par un bloc de connexion à la base de données).
* Lorsqu'il est déclenché, le bloc exécute l'opération choisie en arrière-plan et renvoie `Output Data` et `Success?` une fois terminé.
* Tout problème (entrées invalides, client manquant, JSON mal formé ou erreurs SQL) est signalé dans la zone de messages/log du bloc.

## ✨ Fonctionnalités clés <a href="#features" id="features"></a>

* Sockets dynamiques qui s'adaptent à l'opération SQL choisie pour une interface propre.
* Exécution en arrière-plan pour garder l'interface réactive lors d'appels base de données longs.
* Entrées simples basées sur JSON pour INSERT et UPDATE afin de faciliter l'alimentation de données tabulaires.
* Indicateur clair de réussite et données de résultat retournées pour traitement ultérieur.

## 📝 Instructions d'utilisation <a href="#usage" id="usage"></a>

1. Fournissez un client de base de données au socket `DB Client` (voir Conseils et astuces).
2. Choisissez l'opération désirée avec `Select SQL Operation`.
3. Si nécessaire, saisissez la table cible dans `Table Name`.
4. Connectez les sockets de données requis pour l'opération choisie (par ex. `JSON Data` pour INSERT).
5. Envoyez un signal true à `Enable` pour lancer l'opération.
6. Inspectez `Output Data` et `Success?` pour poursuivre le traitement dans votre scénario.

## 💡 Conseils et astuces <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Pour établir les connexions, utilisez `SQL-DB Client Connect` pour créer et fournir le socket `DB Client`.
* Préparez les payloads d'insertion/mise à jour avec `Data to JSON` afin que le format corresponde aux entrées JSON/dictionnaire attendues.
* Si vous construisez des chaînes SQL dynamiquement, utilisez `String Input` ou `String Merge` pour composer la requête ou l'instruction avant de les envoyer dans `Query String` ou `Statement String`.
* Stockez ou partagez des clients DB ou des résultats fréquemment utilisés en combinant `Data Write Local` / `Data Read Local` ou les variantes globales pour un accès inter‑scénarios.
* Utilisez `Parse Data Dictionary` pour extraire des champs des lignes retournées par une requête et les alimenter dans d'autres blocs.
* Utilisez `Debug Input` pour consigner et inspecter rapidement les données intermédiaires entrantes lors du dépannage.
* Si vous devez sauvegarder les résultats d'une requête pour plus tard, combinez avec `CSV Export` pour écrire les données de sortie dans un fichier.

## 🛠️ Dépannage <a href="#troubleshooting" id="troubleshooting"></a>

* `DB Client` n'est pas valide\
  Assurez-vous d'avoir connecté un client de base de données approprié (utilisez `SQL-DB Client Connect`). Le bloc affichera une erreur si le client est manquant ou invalide.
* L'opération retourne une erreur\
  Vérifiez le payload JSON fourni ou la chaîne SQL pour en assurer la validité. Utilisez `Debug Input` ou `Parse Data Dictionary` pour inspecter les entrées et sorties.
* Aucune réponse ou attente longue\
  Le bloc exécute les opérations en arrière‑plan, mais les requêtes lourdes peuvent prendre du temps. Gardez les requêtes petites ou vérifiez que la base de données est accessible et réactive.
* JSON mal formé\
  Lors de l'utilisation d'entrées JSON, validez le JSON avec `Data to JSON` ou vérifiez le contenu avec des blocs de logging avant de connecter.

Si les problèmes persistent, consultez la sortie de messages/log du bloc pour obtenir des indices et ajustez les entrées ou les paramètres de la base de données en conséquence.
