-
DB2/400 V5, UDF
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
Code:
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
Code:
[SQL0491] Clause not correct for CREATE FUNCTION or CREATE PROCEDURE.
Mein jetziger Versuch
Code:
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
-
... normalerweise müsste man an dem Fehler ersehen - welche Klausel - es da meint. Und das Release ist wichtig: V5R1 kannte noch keine Table Functions z.B.
D*B
-
Danke erstmal für die Antwort BenderD!
Release auf der Maschine ist 4, also
V5R4
Ich muss dazu sagen, dass ich die Funktion über JDBC versuche abzusetzen, was ja eigentlich keine Rolle spielen sollte oder?
-
... für die Erstellung der Function nicht, für die Error Information schon. Es macht aus meiner Sicht schon Sinn, die Function am "grünen" SQL Interpreter, oder noch besser aus einer Textquelle per RUNSQLSTM zu erstellen.
D*B
 Zitat von asrijaal
Danke erstmal für die Antwort BenderD!
Release auf der Maschine ist 4, also
V5R4
Ich muss dazu sagen, dass ich die Funktion über JDBC versuche abzusetzen, was ja eigentlich keine Rolle spielen sollte oder?
-
Wie Bender schon sagte, es muss eine genauere Fehlermeldung zurückgegeben werden, die das eigentliche Problem beschreibt.
Ansonsten:
*) Verwende in SQL Functions oder Procedures NIE CHAR sonder NUR VARCHAR. Du hast damit - zumindest bis V5R4 - NUR Probleme dadurch.
*) Ich bin mir nicht sicher ob die qualifizierte Angabe des Eingangparameters (DEPTEMPLOYEES.DEPTNO) überhaupt erlaubt ist?!
*) Du solltest auch beim Erstellen von SQL Functions oder Procedures IMMER die Bibliothek mit angeben.
Im schlechtesten Fall erstellt er das Objekt in eine Lib die nicht existiert oder viele andere Probleme treten auf.
*) In einer SQL-Function kannst du dieses Beispiel schon realisieren, jedoch wäre eine Procedure hübscher.
Die Function würdest du dann wie folgt aufrufen:
Select * from table (myfunction('Procedure?'))
-
Hallo zusammen,
erstmal Danke für die Antworten. Die Ausgabe auf der iSeries hat mich weiter gebracht, ein
fehlte zum erstellen der Funktion. Jetzt ist diese erstellt, jedoch - das klingt etwas doof - weiss ich nicht, wie ich sie ausführen soll
Erstellt wurde die Funktion in der Lib ATEST
Ein
Code:
SELECT * FROM ATEST.ACTEST(3)
wirft nur einen SQL Fehler raus.
Auf die Syntax von Andreas bekomme ich nur
Code:
[SQL0104] Token was not valid. Valid tokens: AS IN OUT .
Ausführen tue ich
Code:
SELECT * FROM table(ATEST.ACTEST(3))
Vielen Dank für die Geduld und antworten.
-
Hallo,
versuch's doch mal mit
SELECT * FROM table(ATEST.ACTEST(3)) as Hugo
Gruß,
KM
-
Vielen Dank! So gehts
Similar Threads
-
By Nils_V in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 18-07-16, 09:49
-
By leber in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 05-01-07, 09:15
-
By Peder in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 06-12-06, 08:15
-
By ILEMax in forum NEWSboard Programmierung
Antworten: 25
Letzter Beitrag: 18-09-06, 13:39
-
By HACHIMAN in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 22-05-06, 09:48
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks