# Write PL/PgSQL scripts

## **PL/PgSQL code in the script engine**

In *Eliona* scripts can be written not only in Python, but also in **PL/PgSQL** . This enables direct processing of SQL queries within the script engine.

***

## **Script definition**

When creating a new **PL/PgSQL**-script in the script engine, a template function is automatically suggested. This template serves as a starting point for script creation.

```sql
DO $$
DECLARE
    -- Variables can be declared here
BEGIN
    -- SQL queries and operations can be executed here
END $$;
```

***

## **Example: Update timestamp**

The following example shows how a script retrieves the current timestamp (`NOW()`) from the database and updates it for a specific asset (`asset_id = 1`) in the `heap`-table:

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

▷ *The script stores the current timestamp in the `heap`-table for the asset with the ID `1`*

{% hint style="warning" %}
**Please note security:** Direct database changes take effect immediately and cannot be undone.
{% endhint %}
