[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2009
    Beiträge
    5

    FETCH INTO DESCRIPTOR liefert immer die erste Dateizeile zurück

    Hallo zusammen,

    ich habe ein Problem mit einem variablen SQL.
    Der erste FETCH funktioniert problemlos.
    Die folgenden liefern aber als Ergebnis immer den Inhalt des ersten Ergebnisses zurück.
    Im Log sehe ich dann folgende Meldung:

    Nachrichten-ID . . . . : SQL0030 Bewertung . . . . . . : 00
    Nachrichtenart . . . . : Information
    Sendedatum . . . . . . : 27.10.09 Sendezeit . . . . . . : 12:17:17

    Nachricht . . . : Anzahl der Host-Variablen geringer als die Ergebniswerte.
    Ursache . . . . : Die Anzahl der in der Klausel INTO angegebenen
    Host-Variablen ist geringer als die Anzahl der Ergebniswerte. Wird das
    Programm verarbeitet, werden nur den angegebenen Variablen Werte zugeordnet.
    Fehlerbeseitigung: Sollen alle Werte empfangen werden, richtige Anzahl an
    Host-Variablen angeben. Das Programm erneut vorumwandeln.


    Viele Grüße
    Michael

    ---------

  2. #2
    Registriert seit
    Oct 2009
    Beiträge
    5

    Unhappy Scheint ein Bug zu sein...

    Ich habe ein wenig weiter mit der obigen Quelle herumexperimentiert.

    Wenn ich FETCH NEXT... ersetze durch
    Code:
     
    fetch relative 1 from C1 into sql descriptor :v_descriptor
    und direkt danach

    Code:
    c                   if        v_i_fetch = 2                         
    c/exec sql                                                          
    c+ fetch relative 0 from C1 into sql descriptor :v_descriptor       
    c/end-exec                                                          
    c                   endif                                           
     *---                                                               
    c                   if        v_i_fetch = 3                         
    c/exec sql                                                          
    c+ fetch relative 0 from C1 into sql descriptor :v_descriptor       
    c/end-exec                                                          
    c/exec sql                                                          
    c+ fetch relative 0 from C1 into sql descriptor :v_descriptor       
    c/end-exec                                                          
    c                   endif                                           
     *---                                                               
    c                   if        v_i_fetch = 4                         
    c/exec sql                                                          
    c+ fetch relative 0 from C1 into sql descriptor :v_descriptor       
    c/end-exec      
     c/exec sql                                                    
    c+ fetch relative 0 from C1 into sql descriptor :v_descriptor 
    c/end-exec                                                    
    c/exec sql                                                    
    c+ fetch relative 0 from C1 into sql descriptor :v_descriptor 
    c/end-exec                                                    
    c                   endif
    dann werden tatsächlich die nächsten Zeilen eingelesen.
    Das heisst, man braucht pro FETCH RELATIVE 1 ... -Vorgang in der Schleife immer ein zusätzliches FETCH RELATIVE 0... mehr.

    Das kann ja nicht der Weisheit letzter Schluss sein - ist also wohl ein Bug.

    Eine Schleife in der Art
    Code:
    c                   If        v_i_fetch >= 2                        
    c                   eval      v_i_fetch_0 = v_i_fetch - 1           
    c                   do        v_i_fetch_0                           
    c/exec sql                                                          
    c+ fetch relative 0 from C1 into sql descriptor :v_descriptor       
    c/end-exec                                                          
    c                   enddo                                           
    c                   EndIf
    funktioniert nicht.

    Kann diesen Effekt einer von Euch bei sich auf der i5 nachvollziehen (Betriebssystem ist V5R4M0)?

    Viele Grüße
    Michael

Similar Threads

  1. Brauche Hilfe zu FETCH xxx USING DESCRIPTOR
    By AndreasH in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 08-05-15, 13:09
  2. FETCH n ROws in einzelne Felder einer DS
    By pedro-zapata in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 11-09-06, 12:34
  3. Group und fetch first xx rows
    By linguin in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 04-08-06, 10:38
  4. FETCH INTO Variablen Dynamisch verändern
    By marcel331 in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 11-04-06, 15:47
  5. embedded-SQL fetch über mehrere Dateien
    By zannaleer in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 30-01-05, 16:51

Berechtigungen

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