[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    1.975

    SQL fetch for 500 rows into :DS

    Moin zusammen

    Ein PGM macht ein

    fetch from c1 for 500 rows into doppelpunktDS

    Die DS hat 5 Felder, ist qualified definiert mit dim(500)
    Funktioniert bestens!

    Jetzt wird eine andere View verwendet, die einzelnde Felder als NULL zurück bringen kann

    ich habe zunächst die Null indikatoren in die DS eingebaut.
    Das läst sich wandeln, funktioniert aber nicht (versteh ich)
    Dann habe ich eine 2. DS definiert mit NULL Indikatoren für alle Felder und mach nun

    fetch from c1 for 500 rows into doppelpunktDS :IND

    IND ist auch qualified und dim(%elem(DS))

    aber das läst sich nicht wandeln. (Ind ungültig)

    Wie ist die richtige Syntax?


    Danke
    Robi
    Last edited by Robi; 20-09-17 at 12:42. Grund: echter doppelpunkt geht nicht
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Robi Beitrag anzeigen
    Moin zusammen

    Ein PGM macht ein

    fetch from c1 for 500 rows into doppelpunktDS

    Die DS hat 5 Felder, ist qualified definiert mit dim(500)
    Funktioniert bestens!

    Jetzt wird eine andere View verwendet, die einzelnde Felder als NULL zurück bringen kann

    ich habe zunächst die Null indikatoren in die DS eingebaut.
    Das läst sich wandeln, funktioniert aber nicht (versteh ich)
    Dann habe ich eine 2. DS definiert mit NULL Indikatoren für alle Felder und mach nun

    fetch from c1 for 500 rows into doppelpunktDS :IND

    IND ist auch qualified und dim(%elem(DS))

    aber das läst sich nicht wandeln. (Ind ungültig)

    Wie ist die richtige Syntax?


    Danke
    Robi
    ... so aus dem Kopf, mach mal ein Array 4b 0 dim(xxx)
    je nach Anwendung ist zuweilen coalesce mehr kommod.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Ja, danke

    Wenn ich anstatt der einzel IND-Felder ein Feld mit DIM verwende geht es tatsächlich

    also

    d DS ds dim(500) qualified inz
    d f1 1A
    d F2 5S 0
    d f3 10A

    d ind ds dim(%elem(DS)) qualified inz
    d indi 5i 0 dim(3)

    abfrage für den indikator des feldes F3
    if ind(x).indi(3) = -1
    ...
    endif

    irgendwie nicht so schön, wenn sich die DS mal 'mittendrin' erweitert aber ok, funktioniert
    Danke
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Robi Beitrag anzeigen
    irgendwie nicht so schön, wenn sich die DS mal 'mittendrin' erweitert aber ok, funktioniert
    Danke
    Robi
    ... dann machst Du was verkehrt!!! Eine View ändert sich nie und die e ds gehört auf die View und dann select * in die DS. Wenn Felder dazukommen, gibt es eine zusätzliche View und zuweilen darf eine alte weg. In allen Fällen von nicht select * ist Feldliste in Feldliste angesagt. (Wer einmal zwei Felder beim select into verwechselt hat, der weiß sofort warum)

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Eine View ändert sich nie
    Hier schon, es wird sehr wenig mit views gearbeitet,
    hauptsächlich um 3-10 Dateien mit einem Lesevorgang im Zugriff zu haben.

    Select * gibt es (fast) nicht
    Was meinst du mit Feldliste in Feldliste?

    Ich meine: (nur als Bsp!)

    DS dim() qualified
    name 30
    plz 5p 0
    ort 22
    und nach 2 Jahren kommt ZWISCHEN Name und PLZ die Strasse.

    Könnte ich im Pgm auch dahinter in die DS aufnehmen, DARF ich aber nicht.
    (Feld reihenfolge = Datei reihenfolge)
    Die Str ist seid beginn in der View vorhanden

    Feldliste in Feldliste ... was ist das?
    Danke
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Robi Beitrag anzeigen
    Hier schon, es wird sehr wenig mit views gearbeitet,
    hauptsächlich um 3-10 Dateien mit einem Lesevorgang im Zugriff zu haben.

    Select * gibt es (fast) nicht
    Was meinst du mit Feldliste in Feldliste?

    Ich meine: (nur als Bsp!)

    DS dim() qualified
    name 30
    plz 5p 0
    ort 22
    und nach 2 Jahren kommt ZWISCHEN Name und PLZ die Strasse.

    Könnte ich im Pgm auch dahinter in die DS aufnehmen, DARF ich aber nicht.
    (Feld reihenfolge = Datei reihenfolge)
    Die Str ist seid beginn in der View vorhanden

    Feldliste in Feldliste ... was ist das?
    Danke
    Robi
    ... genau für mehrere Dateien in einem Lesevorgang gibt es Views.
    statt select Feld1, Feld2, Feld3 into :someDS
    select Feld1, Feld2, Feld3 into :Feld1, :Feld2, :Feld3
    analog natürlich auch
    Select sum(Feld1) Feld1, sum(Feld2) Feld2 ... into :Feld1, :Feld2...

    dann sieht man sofort auf den ersten Blick was wohin zu passen hat.
    Aber ihr seid ja wohl von der noRisc noFun Fraktion - sowas wie Feld auch noch mittenrein würde ich mir nie antun.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Na ja, das gibt es hier natürlich auch
    aber manchmal ist es besser alle Sätze in eins in eine DS zu lesen (hier max 500)
    (darum ging es hier)

    sowas wie Feld auch noch mittenrein würde ich mir nie antun.
    Da gebe ich dir Recht, das ist ein unnütze blödsinnige Vorgabe.
    Aber es ist nunmal eine ...
    (und diese Diskusion ... unnütz, blödsinn ... habe ich schon all zu oft geführt)
    vllt raff ich moch mal auf mit der Argument das der NullIndikator eine DIM-DS sein muß.
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Robi Beitrag anzeigen
    Na ja, das gibt es hier natürlich auch
    aber manchmal ist es besser alle Sätze in eins in eine DS zu lesen (hier max 500)
    (darum ging es hier)
    ... Block fetch ist für alle dirty reads ala Subfile füllen schon aus Performancegründen anzuraten (1000 Sätze dauern solang wie einer) macht man updates holt der positioned update das mehr als auf und ist schneller. Aber genau da würde ich immer eine View anlegen.

    Was Änderungen an externen Datenstrukturen angeht, das wird doch spätestens zum Horror, wenn diese in Parameterschnittstellen vorkommen, oder mit dynamic SQL verwendet werden und vielleicht noch SQL Skripte aus Dateien kommen.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Apr 2005
    Beiträge
    385
    Ich dachte immer bei einem fetch for x rows müsste die DS immer OCCUR definiert sein, nicht DIM?!?!?!

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... typischer Fall vonDenkste :-)
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Antworten: 9
    Letzter Beitrag: 22-12-15, 12:08
  2. select into wie fetch next
    By Robi in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 22-05-15, 07:31
  3. Brauche Hilfe zu FETCH xxx USING DESCRIPTOR
    By AndreasH in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 08-05-15, 13:09
  4. fetch for 1000 Rws only
    By Robi in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 09-03-15, 15:56
  5. Antworten: 7
    Letzter Beitrag: 24-04-14, 10:00

Berechtigungen

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