SQL mit Case auf ZO/s DB2-Version 8 oder 9

hallo!
Ich habe eine „nicht DB2“ Tabelle, die u.a. zu den User-Kennungen die Anteilungsbezeichnung enthält.

Wir haben eine Userdefined-Function im SQL mit welcher wir beim select den User mit geben und als Ergebnis die Abteilung erhalten.
SELECT
DRTADM.USERGRP_D(T1SAB) AS EMPF

Das ist auch alles gut.

Mein Problem ist nun folgendes:
bei einem sog. technischen User, habe ich keine Abteilung. Es kommt also der Wert BLANK zurück.
Ich möchte nun, wenn das Ergebnis Blank ist,
die ersten 4 Stellen des technischen Users in der Liste anlisten.
„Selectiere Abtlg mit Hilfe von UDF.
wenn Ablung leer dann nimm erste 4 Stellen vom user
else nimm UDF-Ergebnis“ oder umgekehrt.

Also habe ich es mit dem Case-Befehl versucht.
Z.B. so:
CASE DRTADM.USERGRP_D(T1SAB)
WHEN ‚‘
THEN (SUBSTR(T1SAB, 1, 4))
END,

oder so:
CASE
WHEN EXISTS(SELECT * FROM DRTADM.GRUREF1
WHERE DRTADM.USERGRP_D(T1SAB)^= ‚‘)
THEN DRTADM.USERGRP_D(T1SAB)
ELSE (SUBSTR(T1SAB, 1, 4))
END,

Fehlermeldungen waren z.B.:
DSNT408I SQLCODE = -583, ERROR: THE USE OF FUNCTION OR EXPRESSION USE
OF FUNCTION OR EXPRESSION USERGRP_D IS INVALID BECAUSE IT IS NOT DETERMINISTIC OR
HAS AN EXTERNAL ACTION

und:
DSNT408I SQLCODE = -582, ERROR: THE SEARCH-CONDITION IN A SEARCHED-WHEN-CLAUSE CANNOT BE A QUANTIFIED PREDICATE, IN PREDICATE, OR AN EXISTS PREDICATE
DSNT418I SQLSTATE = 42625 SQLSTATE RETURN CODE

Ich habe den Eindruck, eine UDF darf ich nicht in einer case und auch nicht in einer exists - Abfrage benutzen.

Hat jemand einen Tipp, wie sich das lösen lässt ???

LG aus HH
Bettina

Hallo Bettina

Die Lösung:

 SELECT 
 DRTADM.USERGRP\_D(T1SAA) AS EMPF, 
 T1SAB , 
 CASE 
 WHEN 
 DRTADM.USERGRP\_D(T1SAB) = '' 
 THEN (SUBSTR(T1SAB, 1, 4)) 
 ELSE DRTADM.USERGRP\_D(T1SAB) 
 END , 
 SUBSTR(T1GNR, 1, 18) , 
 T1URDA, 
 T1VETE, 
 T1VORG, 
 T1FIX 
 FROM 
 DRTADM.GRUREF1 
 WHERE 
 ... 

Gruss
DiBo

Hi DiDo!
1000 Dank. So hatte ich das auch schon probiert. Und es ging nicht. Ich muss glatt mal vergleichen, ob ich irgendwo falsch geklammert hatte oder so.
Freue mich sehr über Deine Hilfe !!!

LG
Bettina