# PL/PgSQL-Skripte schreiben

## **PL/PgSQL-Code in der Skript-Engine**

In *Eliona* können Skripte nicht nur in Python, sondern auch in **PL/PgSQL** geschrieben werden. Dies ermöglicht die direkte Verarbeitung von SQL-Abfragen innerhalb der Skript-Engine.

***

## **Skript-Definition**

Beim Erstellen eines neuen **PL/PgSQL**-Skripts in der Skript-Engine wird automatisch eine Template-Funktion vorgeschlagen. Dieses Template dient als Ausgangspunkt für die Skripterstellung.

```sql
DO $$
DECLARE
    -- Hier können Variablen deklariert werden
BEGIN
    -- Hier können SQL-Abfragen und Operationen ausgeführt werden
END $$;
```

***

## **Beispiel: Zeitstempel aktualisieren**

Das folgende Beispiel zeigt, wie ein Skript den aktuellen Zeitstempel (`NOW()`) aus der Datenbank abruft und ihn für ein bestimmtes Asset (`asset_id = 1`) in der `heap`-Tabelle aktualisiert:

```sql
DO $$
    DECLARE r timestamptz;
BEGIN
    SELECT NOW() INTO r;
    UPDATE heap SET ts = r WHERE asset_id = 1;
END$$;
```

▷ *Das Skript speichert den aktuellen Zeitstempel in der `heap`-Tabelle für das Asset mit der ID `1`*

{% hint style="warning" %}
**Sicherheit beachten:** Direkte Datenbankänderungen sind sofort wirksam und können nicht rückgängig gemacht werden.
{% endhint %}
