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.
No Comments