# PL/PgSQL-Skripte schreiben

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

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

***

## Skriptdefinition

Wenn Sie ein neues **PL/PgSQL** Skript in der Skript-Engine erstellen, wird automatisch eine Vorlagenfunktion vorgeschlagen. Diese Vorlage dient als Ausgangspunkt für die Skripterstellung.

```sql
DO $$
DECLARE
    -- Variablen können hier deklariert werden
BEGIN
    -- SQL-Abfragen und Operationen können hier 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" %}
Hinweis zur Sicherheit: Direkte Datenbankänderungen werden sofort wirksam und können nicht rückgängig gemacht werden.
{% endhint %}
