Skip to main content

Dynamisches SQL mit Platzhalter

Eine String-Variable so formatieren, dass man einen Platzhalter im Text durch einen Variableninhalt ersetzt. So kann man einen optionalen Filter z.B. in einer Prozedur einbauen.

DECLARE sql LONG VARCHAR;
DECLARE ls_monatsfilter VARCHAR(100);

SET sql = 'SELECT *
FROM kunden
--$MONATSFILTER$';

SET ls_monatsfilter = 'WHERE monat = 5';

SET sql = REPLACE(sql, '--$MONATSFILTER$', ls_monatsfilter);

EXECUTE IMMEDIATE WITH QUOTES sql;

Wenn man den Inhalt der SQL-Variable so strukturiert, dass dieses SELECT-Statement auch ohne zusätzlichen Filter lauffähig ist, dann kann man den Filter optional gestalten. Beispielsweise wird der Filter-Platzhalter nur dann ersetzt, wenn in einem entsprechenden Filter-Parameter auch etwas übergeben worden ist.