[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2007
    Beiträge
    13

    SQL-Prozedur lässt sich nicht erstellen

    Hallo Leute

    Ich habe versucht eine SQL-Prozedur zu erstellen, stoße dabei allerdings auf Probleme:

    Bei folgender Prozedur

    CREATE PROCEDURE MASSWART
    LANGUAGE SQL
    BEGIN
    DECLARE RTGN CHAR(18);
    DECLARE P_OK CHAR(1);
    DECLARE P_RETURN CHAR(7);

    DECLARE C1 CURSOR FOR SELECT DISTINCT RTGNRB FROM RTGPF0RB WHERE RTGTRB = 'V' AND TNOCRB = '1434096' AND RTGNRB LIKE '0A159%' ;

    OPEN C1;
    FETCH_LOOP1:
    LOOP
    FETCH C1 INTO RTGN;
    IF RTGN IS NULL THEN
    LEAVE FETCH_LOOP1;
    END IF;
    CALL RTSMAW3(RTGN, P_OK);
    IF P_OK <> ' ' THEN
    LEAVE FETCH_LOOP1;

    END IF;
    END LOOP
    FETCH_LOOP1;
    CLOSE C1;

    IF P_OK <> ' ' THEN
    GOTO ENDE;

    END IF;

    DECLARE C2 CURSOR FOR SELECT DISTINCT RTGNRB FROM RTGPF0RB WHERE RTGTRB = 'V' AND TNOCRB = '1434096' AND RTGNRB LIKE '0A159%' ;
    OPEN
    C2;

    FETCH_LOOP2:
    LOOP
    FETCH C2 INTO RTGN;
    IF RTGN IS NULL THEN
    LEAVE FETCH_LOOP2;
    END IF;

    CALL RTSPGASX('AT', 'AT', 'AT', RTGN, '*READ', ' ', ' ', P_RETURN);
    UPDATE RTSPFASW SET TNOCRW = '1434124' WHERE RTGNRW = RTGN AND TNOCRW = '1434096';
    CALL RTSPGASX('AT', 'AT', 'AT', RTGN, '*UPDATE', ' ', ' ', P_RETURN);

    END LOOP
    FETCH_LOOP2;
    CLOSE C2;

    ENDE:

    wird mir im OPSNAV immer folgender Fehler angezeigt

    SQL-Status: 42601
    Vendorencode: -104
    Nachricht: [SQL0104] Token C2 ungültig. Gültige Token: GLOBAL. Ursache . . . . : Bei Token C2 wurde ein Syntaxfehler entdeckt. Token C2 ist kein gültiges Token. GLOBAL ist eine Teilliste gültiger Token. Diese Liste geht davon aus, dass die Anweisung bis zu diesem Token korrekt ist. Es kann eine frühere Stelle in der Anweisung fehlerhaft sein, aber bis zu dieser Stelle scheint die Syntax gültig zu sein. Fehlerbeseitigung: Einen der folgenden Schritte durchführen und die Anforderung wiederholen: - SQL-Anweisung im Bereich des Token C2 überprüfen. Anweisung korrigieren. Der Fehler kann ein fehlendes Komma oder Anführungszeichen sein, er kann in einem falsch geschriebenen Wort oder in der Anordnung der Klauseln begründet sein. - Ist das fehlerhafte Token , die Anweisung korrigieren, da sie mit einer ungültigen Klausel endet.

    Verarbeitung wurde beendet, da die hervorgehobene Anweisung nicht erfolgreich abgeschlossen werden konnte

    Dabei wird die Anweisung "DECLARE C2 ..." angemeckert - ich kann allerdings beim besten Willen keinen Fehler feststellen!

    Was übersehe ich dabei?

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    bei einer Stored Procedure, einer User Defined Function und einem SQL Trigger, müssen alle Declare-Anweisungen zu Beginn der Prozedur erfolgen, also unmittelbar nach dem Begin-Statement.

    Die zweite Declare Cursor Anweisung muss also unmittel bar nach der ersten Declare Cursor Anweisung erfolgen und nicht irgendwo mittendrin.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Mar 2007
    Beiträge
    13
    Besten Dank für die schnelle Antwort!

Similar Threads

  1. Dynamisches SQL in einem CL erstellen
    By Sony in forum IBM i Hauptforum
    Antworten: 27
    Letzter Beitrag: 20-07-09, 21:48
  2. SQL Date im Datumsformat *EUR erstellen
    By N.Welp in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 03-11-05, 14:50
  3. Printerfile via SQL erstellen
    By Anna in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 20-09-05, 16:27
  4. Erstellen Trigger über SQL / Read Funktion
    By GHoffmann in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 07-07-05, 09:18
  5. via SQL Tabellen erstellen
    By infomio in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 10-07-02, 14:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •