[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2005
    Beiträge
    90
    Danke für die Antwort.
    Wenn mehr als 5 Datensätze vorhanden sind, werden diese ebenfalls zurückgegeben.

    Aktuell habe ich ca. 1000 Datensätze die alle zurückgegeben werden.
    Wobei es später definitv weniger sein werden, da nach der Verarbeitung die Tabelle leer gemacht wird.

    Das ganze soll eine Schnittstelle zu einem anderem Anbieter sein.
    Dieser benötigt von uns Daten und kann NUR ein SQL-Result verarbeiten.
    Daher dieser ganze kram.

    Du sagtest in diesem Fall ja.
    Gibt es noch eine andere Möglichkeit?
    Also aus der Verarbeitung heraus ein SQL-Result zu erhalten?

    Jeder Rat ist gut =)

  2. #2
    Registriert seit
    Jan 2005
    Beiträge
    90
    Ok glaub ich habs
    wenn ich
    Code:
    C*****/EXEC SQL                                                         
    C*****+ SET RESULT SETS FOR RETURN TO CLIENT ARRAY :RESULTS FOR :X ROWS,
    C*****+  CURSOR C1                                                      
    C*****/END-EXEC
    Auskommentieren, dann bekomme i nur ein Result

    So wie ich es haben wollte =)

  3. #3
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hi,

    wenn das RPG nur ein SQL enthält um Daten als Resultset
    zu liefern, dann lass doch das RPG weg.

    In der SQL Procedure kannst Du den select direkt eintragen.
    Gruß
    Michael

  4. #4
    Registriert seit
    Jan 2005
    Beiträge
    90
    @mk: Danke für den Hinweis.
    Das RPG macht nachher schon noch mehr Sachen. Ich habe das Programm zum Testen jetzt erstmla recht klein gehalten.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn du nur die Daten des Cursors zurückgeben willst, brauchst du in deinem RPGle eigentlich nichts machen und schon gar nicht den Cursor lesen (Fetch), da sonst der Aufrufer nichts bekommt (Fetch Only).

    Veränderst du die Daten um die geänderten Daten des Array's zurückzugeben, so lass das
    "CURSOR WITH RETURN TO CLIENT" weg, da du ja das Array zurückgeben willst und mach zum Schluss einen "Close".

    Bei wiederholten Aufrufen der Prozedur ist ggf. ein "Close" vor dem "Open" erforderlich da der Cursor noch offen sein kann.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Jan 2005
    Beiträge
    90
    Ok das sieht super aus =)

    Danke für die Unterstützung.

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Toschie Beitrag anzeigen
    Ok glaub ich habs
    wenn ich
    Code:
    C*****/EXEC SQL                                                         
    C*****+ SET RESULT SETS FOR RETURN TO CLIENT ARRAY :RESULTS FOR :X ROWS,
    C*****+  CURSOR C1                                                      
    C*****/END-EXEC
    Auskommentieren, dann bekomme i nur ein Result

    So wie ich es haben wollte =)
    Die Ausgabe über SET RESULT SETS ist bereits seit Release V5R1 nicht mehr erforderlich. Das Result-Set wird allein dadurch ausgegeben, dass der Cursor vor Programm/Prozedur-Ende geöffnet und nicht geschlossen wird.

    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

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    @Birgitta
    Aha, und wie soll dann das Array und nicht der Cursor zurückgegeben werden?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Man kann natürlich weiterhin Arrays über SET RESULT SETS ausgeben und den Cursor vor Programm-Ende schließen. Nur warum sollte man 2 Schritte machen, wenn nur ein einziger notwendig ist?

    Außerdem kann ein Array nur eine bestimmte Anzahl an Elementen zurückgeben, während über einen geöffneten Cursor eine unbestimmte Anzahl an Elementen ausgegeben werden kann.

    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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dann les doch besser mal die Aufgabenstellung:
    "Das RPG macht nachher schon noch mehr Sachen"!
    Nur mit dem Cursor scheint es da wohl nicht getan.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Prozedur gibt keinen Wert zurück. Warum?
    By msost in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 22-01-13, 09:27
  2. Prozedur, in welchem Modul
    By loeweadolf in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 06-11-06, 15:05
  3. Prozedur variabel aufrufen
    By rolf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 14-10-05, 17:06
  4. Externe Prozedur
    By Muchi in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 23-03-05, 08:04
  5. Rückgabe von 2 Werten aus einer Prozedur
    By BUG in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 18-10-04, 13:55

Berechtigungen

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