# SQL-DB Operations

Dieser Funktionsblock ermöglicht gängige SQL-Aktionen (INSERT, QUERY, UPDATE, DELETE, EXECUTE) auf einer verbundenen Datenbank. Die Benutzeroberfläche ist einfach: Sie wählen die gewünschte Operation, geben bei Bedarf einen `Table Name` ein und versorgen die benötigten Eingänge über Sockets. Operationen laufen im Hintergrund, damit die Oberfläche reaktionsfähig bleibt.

## 📥 Eingänge (sockets)

Je nach gewählter SQL-Operation stellt der Block unterschiedliche Eingangs-Sockets bereit. Jeder unten aufgeführte Name ist ein Socket, den Sie mit anderen Blöcken verbinden können.

Gemeinsame Sockets für alle Methoden

* `Enable`\
  Muss auf true gesetzt werden, damit die gewählte Operation ausgeführt wird.
* `DB Client`\
  Eine Datenbank-Client-Referenz, die von einem separaten Verbindungsblock bereitgestellt wird (siehe Tips and Tricks).

Per-Methode Sockets

* INSERT
  * `JSON Data`\
    Daten, die in die gewählte Tabelle eingefügt werden (JSON/Dictionary).
* QUERY
  * `Query String`\
    SQL-SELECT oder andere Abfragezeichenfolge, die ausgeführt werden soll.
* UPDATE
  * `JSON Data`\
    Update-Werte (JSON/Dictionary).
  * `JSON Data(Where Conditions)`\
    Where-Bedingungen zur Auswahl der zu ändernden Zeilen.
* DELETE
  * `JSON Data(Where Conditions)`\
    Where-Bedingungen zur Auswahl der zu löschenden Zeilen.
* EXECUTE
  * `Statement String`\
    Roh-SQL-Anweisung zur Ausführung (vorsichtig verwenden).

Hinweis: Der Block zeigt bzw. versteckt die Eingabesteuerung `Table Name`, je nach gewählter Operation.

## 📤 Ausgänge (sockets)

* `Output Data`\
  Gibt das Ergebnis der Operation zurück (z. B. Abfragezeilen, Informationen zu betroffenen Zeilen oder operationsspezifische Daten).
* `Success?`\
  Boolean, der anzeigt, ob die Operation erfolgreich abgeschlossen wurde.

## 🕹️ Steuerungen (widgets)

* `Select SQL Operation`\
  Dropdown zur Auswahl einer der Optionen: INSERT / QUERY / UPDATE / DELETE / EXECUTE. Die verfügbaren Eingangs-Sockets passen sich entsprechend an.
* `Table Name`\
  Textfeld für den Zieltabellennamen. Wird automatisch ausgeblendet, wenn nicht erforderlich (z. B. bei `EXECUTE`).

## ⚙️ Ablauf / Ausführungsmechanismus

* Der Block läuft nur, wenn der `Enable`-Socket ein true erhält.
* Er benötigt einen gültigen `DB Client`-Socket (in der Regel von einem Datenbankverbindungs-Block bereitgestellt).
* Bei Auslösung führt der Block die gewählte Operation im Hintergrund aus und liefert nach Abschluss `Output Data` und `Success?`.
* Probleme (z. B. ungültige Eingaben, fehlender Client, fehlerhaftes JSON oder SQL-Fehler) werden im Nachrichten-/Logbereich des Blocks angezeigt.

## ✨ Wichtige Funktionen

* Dynamische Sockets, die sich an die gewählte SQL-Operation anpassen und so die UI aufgeräumt halten.
* Hintergrundausführung für eine reaktionsfähige Oberfläche bei lang laufenden DB-Aufrufen.
* Einfache JSON-basierte Eingaben für INSERT und UPDATE, um tabellarische Daten leicht zu übergeben.
* Deutliche Erfolgsmeldung und zurückgegebene Ergebnisdaten zur Weiterverarbeitung.

## 📝 Nutzungshinweise

1. Stellen Sie einen Datenbank-Client über den `DB Client`-Socket bereit (siehe Tips and Tricks).
2. Wählen Sie die gewünschte Operation über `Select SQL Operation`.
3. Falls erforderlich, geben Sie die Ziel-Tabelle in `Table Name` ein.
4. Verbinden Sie die benötigten Datensockets für die gewählte Operation (z. B. `JSON Data` für INSERT).
5. Senden Sie ein true-Signal an `Enable`, um die Operation auszuführen.
6. Prüfen Sie `Output Data` und `Success?`, um im Szenario weiterzuarbeiten.

## 💡 Tips and Tricks

* Verwenden Sie `SQL-DB Client Connect`, um einen `DB Client` zu erstellen und bereitzustellen.
* Bereiten Sie INSERT-/UPDATE-Payloads mit `Data to JSON` vor, damit das Format mit erwarteten JSON/Dictionary-Eingaben übereinstimmt.
* Falls Sie SQL-Strings dynamisch erzeugen, nutzen Sie `String Input` oder `String Merge`, um die Abfrage bzw. Anweisung vor dem Einspeisen in `Query String` oder `Statement String` zusammenzusetzen.
* Häufig genutzte DB-Clients oder Ergebnisse können mit `Data Write Local` / `Data Read Local` oder den globalen Varianten gespeichert/geteilt werden.
* Verwenden Sie `Parse Data Dictionary`, um Felder aus zurückgegebenen Abfragezeilen zu extrahieren und in andere Blöcke zu leiten.
* `Debug Input` hilft, Zwischenwerte schnell zu protokollieren und zu prüfen.
* Um Abfrageergebnisse zu speichern, kombinieren Sie mit `CSV Export`.

## 🛠️ Fehlersuche

* `DB Client` ist nicht gültig\
  Stellen Sie sicher, dass Sie einen gültigen Datenbank-Client verbunden haben (verwenden Sie `SQL-DB Client Connect`). Der Block zeigt einen Fehler an, wenn der Client fehlt oder ungültig ist.
* Operation gibt Fehler zurück\
  Prüfen Sie das bereitgestellte JSON-Payload oder den SQL-String auf Korrektheit. Nutzen Sie `Debug Input` oder `Parse Data Dictionary`, um Eingaben und Ausgaben zu inspizieren.
* Keine Antwort oder lange Wartezeit\
  Der Block führt Operationen im Hintergrund aus, aber lange Abfragen können Zeit benötigen. Halten Sie Abfragen schlank oder prüfen Sie, ob die Datenbank erreichbar und responsiv ist.
* Fehlerhaftes JSON\
  Validieren Sie JSON-Eingaben mit `Data to JSON` oder prüfen Sie die Inhalte mit Logging-Blöcken, bevor Sie sie verbinden.

Wenn Probleme weiterhin bestehen, lesen Sie die Meldungen im Logbereich des Blocks und passen Sie Eingaben oder Datenbankeinstellungen entsprechend an.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/german/function-blocks/input-output/communication/sql-db-operations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
