[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Diagnostics liefert auch nur bei Update/Delete die Anzahl der Sätze.
    Das stimmt nicht ganz. Das was du meinst ist der Parameter ROW_COUNT. Bei DB2_NUMBER_ROWS wird die anzahl der Sätze der Result Table zurückgegeben (Bei Open und Fetch)

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    OK, das hängt aber nun doch sehr stark vom verwendeten Select und Cursor-Type ab.
    Nur wenn SQL alle Sätze tatsächlich gelesen hat (kein Index für Sortierfolge), der Cursor insensitive ist, o.ä. könnte da ein gültiger Wert drinstehen.


    DB2_NUMBER_ROWS
    If the previous SQL statement was an OPEN or a FETCH which caused the size of the result table to be known, returns the number of rows in the result table. For SENSITIVE cursors, this value can be thought of as an approximation since rows inserted and deleted will affect the next retrieval of this value. If the previous statement was a PREPARE statement, returns the estimated number of rows in the result table for the prepared statement. Otherwise, the value zero is returned.
    Also wirklich verlassen würde ich mich nicht darauf.
    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

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    OK, das hängt aber nun doch sehr stark vom verwendeten Select und Cursor-Type ab.
    Nur wenn SQL alle Sätze tatsächlich gelesen hat (kein Index für Sortierfolge), der Cursor insensitive ist, o.ä. könnte da ein gültiger Wert drinstehen.
    Ich hab das Gefühl du suchst einen Grund das nicht verwenden zu können

    *) Auch WENN die Engine einen Index für Sortierung verwendet steht da ein gültiger Wert drinnen. Wo hast du das denn gelesen??

    *) Auch WENN der Cursor SENSITIVE ist, steht da ein gültiger Wert drinnen (zum Zeitpunkt zu dem das Result-Set aufgebaut wurde!!).
    Vor dem gleichen Problem stehst du beim
    select count(*) as counter from
    ( fullselect )
    Bzw. weist du bei dem count(*) noch weniger ob dein Result-Set danach dem entspricht was du vorher gelesen hast, da sich die Tabelle zwischen den beiden Statements schon längst geändert haben könnte. Also GERADE in solch einen Fall ist die Methode mit GET DIAGNOSTICS die Bessere!!!

  4. #4
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    hab mich vertan, gem. meiner alten doku, ist es sqlerrcode(3), nicht 5

    Ohne es probiert zu haben

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Robi Beitrag anzeigen
    hab mich vertan, gem. meiner alten doku, ist es sqlerrcode(3), nicht 5

    Ohne es probiert zu haben

    Robi
    SQLER3 oder SQLERRCODE(3) gibt die Anzahl der Datensätze an, die bei einem Multiple-Row-Fetch ausgegeben werden oder, die bei einem Insert, Update oder Delete (ohne Cursor) hinzugefügt, geändert oder gelöscht wurden.
    Entspricht dem Schlüssel-Wort ROW_COUNT, das von einem GET DIAGNOSTICS-Statement ausgegeben werden kann.

    SQLER5 order SQLERRCODE(5) gibt an, ob bei einem Multiple Row Fetch noch weitere Zeilen vorhanden sind, d.h. wird 100 ausgegeben, gibt es keine weiteren Zeilen.
    SQLER5 entspricht dem Schlüssel-Wort DB2_LAST_ROW, das von einem GET DIAGNOSTICS Statement 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

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da kann ich nur Birgitta zustimmen.
    Auch SQL weiß erst wieviele Daten tatsächlich gelesen werden, wenn der letzte Fetch erfolgt ist.

    Mache ich einen Single-Fetch bekomme ich 1 zurück, Multiple-Row die Anzahl Strukturen.

    Bei veränderbaren Daten ist natürlich ein Count(*) auch nur eine Abschätzung.
    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

  7. #7
    Registriert seit
    Apr 2005
    Beiträge
    385
    Also nach den ersten Stichrobenartigen Select' kommt beim Tipp vom Robi immer die richtige Anzahl herraus! Ob das immer so ist, kann ich bislang auch nicht sagen.

    Danke erstmal an alle!

Similar Threads

  1. sql Anzahl Datensätze in Zweit-Datei
    By rr2001 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 13-12-06, 14:04
  2. Anzahl Felder in Displayfile
    By steven_r in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 07-11-06, 11:01
  3. Anzahl gelöschter Datensätze in PF
    By Der_Unwissende in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 20-10-06, 08:32
  4. Anzahl angemeldeter User auf der AS400
    By Bratmaxxe in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 29-06-06, 10:29
  5. Einschränkungen in der Anzahl der parallelen Jobs
    By Christian.Hesse in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 04-04-06, 11:59

Berechtigungen

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