Maik Görgens: IBM DB2: Problem mit Function

Hallo!

Ich will grad ne Funktion in IBM DB2 schreiben, bekomms aber irgendwie nicht hin. Meine Funktion:

CREATE FUNCTION team03.i_thema (ids integer)
RETURNS INTEGER
LANGUAGE SQL
MODIFIES SQL DATA
NO EXTERNAL ACTION
DETERMINISTIC
BEGIN ATOMIC
INSERT INTO team03.lehrstuhl VALUES (0, 'name', 'site', ids);
RETURN 1;
END

Der Fehler:

SQL0628N  Bezüglich der Klausel "MODIFIES SQL DATA" werden mehrere oder widersprüchliche Schlüsselwörter verwendet.  LINE NUMBER=13.  SQLSTATE=42613

Ich finde nicht, was da falsch ist. Insbesondere seh ich den Unterschied nicht zu dem Beispiel, das IBM auf seinen Webseiten hat:

CREATE FUNCTION DEPTEMPLOYEES (DEPTNO CHAR(3))
       RETURNS TABLE (EMPNO CHAR(6),
                      LASTNAME VARCHAR(15),
                      FIRSTNAME VARCHAR(12))
       LANGUAGE SQL
       MODIFIES SQL DATA
       NO EXTERNAL ACTION
       DETERMINISTIC
       BEGIN ATOMIC
         INSERT INTO AUDIT
         VALUES (USER,
                 'Table: EMPLOYEE Prd: DEPTNO = ' CONCAT DEPTNO);
         RETURN
           SELECT EMPNO, LASTNAME, FIRSTNME
             FROM EMPLOYEE
             WHERE EMPLOYEE.WORKDEPT = DEPTEMPLOYEES.DEPTNO
       END

Könnt ihr mir da weiterhelfen?

Vielen Dank und Grüße
Maik

  1. yo,

    von DB2 habe ich eigentlich keine ahnung. aber ich versuch doch mal den schuß ins blaue. die fehlermeldung könnte auch ein folgefehler sein. was mir auffällt, dass du in der zweiten zeile nur den typ des rückgabewertes angegeben hast und keinen bezeichner dazu. vielleicht will das kind nur einen namen haben, auch wenn der rückgabewert immer 1 ist ?

    Ilja