asrijaal
20-04-10, 13:30
Hallo Zusammen,
ich bin im Thema DB2 recht frisch und habe jetzt ein Problem, was sich mir jetzt nicht ganz erschliesst.
Problem: Ich habe eine relativ lange und komplexe SQL Abfrage, welche ich gerne als Function auf der DB2 anlegen würde. (View muss ich ausschliessen, da ich parameter in dem SQL Statement verwenden muss).
Laut DB2/400 Reference sollte das über
CREATE FUNCTION DEPTEMPLOYEES (DEPTNO CHAR(3))
RETURNS TABLE (EMPNO CHAR(6),
LASTNAME VARCHAR(15),
FIRSTNAME VARCHAR(12))
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
DISALLOW PARALLEL
RETURN
SELECT EMPNO,LASTNAME,FIRSTNME
FROM EMPLOYEE
WHERE EMPLOYEE.WORKDEPT =DEPTEMPLOYEES.DEPTNO
funktionieren. Zu Testzwecken habe ich das selbe mit einer einfach Abfrage versucht, jedoch bekomme ich nur eins
[SQL0491] Clause not correct for CREATE FUNCTION or CREATE PROCEDURE. Mein jetziger Versuch
CREATE FUNCTION ACTEST (userNr INTEGER)
RETURNS TABLE (USERNAME CHAR(40))
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
RETURN
SELECT USERNAME FROM TEST.USERS p WHERE p.USERNR = ACTEST.userNr
Sind Functions evtl. gar nicht möglich? Müsste ich eine Procedure verwenden?
Vielen Dank für die Aufmerksamkeit!
Grüße
ich bin im Thema DB2 recht frisch und habe jetzt ein Problem, was sich mir jetzt nicht ganz erschliesst.
Problem: Ich habe eine relativ lange und komplexe SQL Abfrage, welche ich gerne als Function auf der DB2 anlegen würde. (View muss ich ausschliessen, da ich parameter in dem SQL Statement verwenden muss).
Laut DB2/400 Reference sollte das über
CREATE FUNCTION DEPTEMPLOYEES (DEPTNO CHAR(3))
RETURNS TABLE (EMPNO CHAR(6),
LASTNAME VARCHAR(15),
FIRSTNAME VARCHAR(12))
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
DISALLOW PARALLEL
RETURN
SELECT EMPNO,LASTNAME,FIRSTNME
FROM EMPLOYEE
WHERE EMPLOYEE.WORKDEPT =DEPTEMPLOYEES.DEPTNO
funktionieren. Zu Testzwecken habe ich das selbe mit einer einfach Abfrage versucht, jedoch bekomme ich nur eins
[SQL0491] Clause not correct for CREATE FUNCTION or CREATE PROCEDURE. Mein jetziger Versuch
CREATE FUNCTION ACTEST (userNr INTEGER)
RETURNS TABLE (USERNAME CHAR(40))
LANGUAGE SQL
READS SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
RETURN
SELECT USERNAME FROM TEST.USERS p WHERE p.USERNR = ACTEST.userNr
Sind Functions evtl. gar nicht möglich? Müsste ich eine Procedure verwenden?
Vielen Dank für die Aufmerksamkeit!
Grüße