PDA

View Full Version : SQL RPGLE-UDF mit mehreren Rückgabewerten



chillenbrand
05-05-08, 10:25
Hallo,

wir haben ein zentrales RPG Programm, welches den Status, das Statusdatum und die Statuszeit einer Sendung zurück gibt.
Dieses Programm haben wir schon erfolgreich als SQL-UDF eingebunden, allerdings bekommen wir nur einen Rückgabewert, in dem alle Infos hintereinander stehen (27 - 02.04.2008 - 13:00). Für die Zukunft brauchen wir die Werte in eigenen Spalten. Erschwerend kommt noch dazu, dass die Function als subselect aufgerufen wird. Sicherlich könnten wir die Function auch mehrmals mit unterschiedlichem Rückgabewert aufrufen, aber vielleicht gibt es eine elegantere Lösung?

Select fir,ndl,sdgnr,abs,absort,emp,empfort,getsts(char(f ir), char(ndl), char(sdgnr)),franka,kdnr
from mylib/auftragsdatei

Die Function haben wir wie folgt definiert:
CREATE FUNCTION getsts (char(3), char(3), char(16))
returns char(25)
LANGUAGE RPG
EXTERNAL NAME 'mylib/GXGETSTS(GETSTS)'
NO SQL

Fuerchau
05-05-08, 13:30
Wie der Name schon sgat, eine FUNKTION kann nur einen Rückgabewert enthalten.
Da muss man sich halt mit einem Trick behelfen:

with
MyTemp as
Select fir,ndl,sdgnr,abs,absort,emp,empfort,getsts(char(f ir), char(ndl), char(sdgnr)) as FERG,franka,kdnr
from mylib/auftragsdatei
)

Select fir,ndl,sdgnr,abs,absort,emp,empfort,
substr(FERG, 1, 2), substr(FERG, 6, 8), substr(ferg, 19, 5),franka,kdnr
from MyTemp

chillenbrand
06-05-08, 09:26
Bin begeistert! Funktioniert! Danke!!!!!!
With xx as war mir schon bekannt,
aber manchmal sieht man den Wald
vor lauter Bäumen nicht..... ;)