PDA

View Full Version : Probleme mit dem Aufruf einer UDF



e_sichert
08-05-08, 06:05
Hallo Zusammen,


ich hab da ein Problem mit dem Aufruf einer UDF der Parameter zu übergeben sind.

Ich habe mir vom IBM Information Center folgendes Beispiel genommen.

CREATE FUNCTION BIBL/PROJFUNC(auftrag CHAR(30))
RETURNS TABLE (PROJNO CHAR(6), ACTNO SMALLINT, ACTSTAFF DECIMAL(5,2),
ACSTDATE DATE, ACENDATE DATE)
LANGUAGE SQL
BEGIN
RETURN SELECT * FROM BIBL/PROJACT
WHERE auftr = auftrag;
END

The function can then be called as:

SELECT * FROM TABLE(BIBL/PROJFUNC(:auftrag)) X

Das Erstellen der UDF funktioniert.
Dann möchte ich die UDF aus dem interaktiven SQL aufrufen. Den Parameter :auftrag gebe ich da nicht als :auftrag sondern als String in einfachen Hochkommas an.
Der Aufruf schaut dann so aus:
SELECT * FROM TABLE(BIBL/PROJFUNC('4711')) X

Dann erhalte ich die Nachricht
PROJFUNC der Art *N in BIBL nicht gefunden.

Was mache ich da falsch.

Vorab, vielen Dank für die Hilfe

Fuerchau
08-05-08, 08:39
Du musst den Parameter passend casten:
cast('xxxx' as char(30)), da sonst keine passende Prozedursignatur ermittelt werden kann.

BenderD
08-05-08, 09:11
... oder als VARCHAR definieren


Du musst den Parameter passend casten:
cast('xxxx' as char(30)), da sonst keine passende Prozedursignatur ermittelt werden kann.

e_sichert
08-05-08, 09:35
Vielen Dank,

das funktioniert erst mal.

Jetzt habe ich aber nochmal eine Frage dazu.
In der Select Anweisung die die Tabelle zurück gibt muss ich mehrere Select's mit UNION ALL verbinden.
Das funktioniert scheinbar nicht.
Jede einzelne Anweisung funktioniert aber wenn ich versuche die UDF mit UNION ALL zu erstellen kommt der Fehler das ein Feld nicht eindeutig ist.
Der komplette Select (mit den UNION ALL) funktioniert aber im interaktiven SQL.
Kann man in einer UDF vielleicht die Tabelle die die UDF zurückgibt mit mehreren Insert Into's füllen um die UNION ALL Verknüpfung zu umgehen?