Hallo,

ich habe bei einer SQL-Abfrage in einem ELSE-Zweig eines CASE-Ausdruckes die Ausführung einer SQL-Funktion, die eine sehr zeitintensive RPG-Funktion aufruft:

SELECT ....

CASE WHEN MDMUS1<>'' THEN MDMUS1 ELSE MOD_getMKZ(afpmdt,afpmod,aumpgm,afpbsd) END

... FROM ...

Bedingt durch die Angabe der Funktion in dem ELSE-Zweig war ich davon ausgegangen, das die Funktion nur dann aufgerufen wird, wenn der ELSE-Zweig auch zur Anwendung kommt. Durch den I/O-Zähler in der Anzeige der offenen Dateien kann ich aber feststellen, das die Funktion für jeder Zeile der Abfrage ausgeführt wird und dadurch wird die Abfrage sehr langsam wird (167198 zu 12417 notwendige Aufrufe).

Hat jemand schon Erfahrungen mit diesem Thema gemacht? Gibt es eine Möglichkeit dieses Verhalten abzustellen?

M.Withake