[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2016
    Beiträge
    45

    SQL - Alternative zu Insert meherer Datensätze in einer Schleife?

    Moin : ),

    ich habe folgende Problemstellung:

    Ich habe hier ein RPG Programm, dieses verwaltet die Geräte unsere Kunden.
    Nun soll eine Funktion implementiert werden die per F-Key einem Kunden alle Geräte aus unserer Gerätedb zuordnet.

    Nun frage ich mich wie mache ich das am sinnvollsten?

    Meine Idee ist bisher ist per Select Into erstmal alle Geräte in einem Array-DS zu speichern, dann in einer DOW Schleife Inserts in die ZuordnungDB Kunde-Gerät zu machen bis das Array einen leeren Eintrag findet (gerätename != ' ').

    Das kommt mir aber irgendwie unelegant vor, deswegen würde es mich interessieren ob es dafür eine schönere Möglichkeit gibt. Vllt. weiß ja jemand hier was eleganteres!

    Grüße aus dem sonnigen Hamburg
    Dominic

  2. #2
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Ich weiß nicht, wofür du die ArrayDS brauchst. Kannst du nicht einfach einen Cursor über deine GeraeteDB machen?

    Also in etwa so:

    exec sql declare cursor csr1 select xx_key from GerateDB;
    exec sql open csr1

    dow sqlcod = 0;
    exec sql fetch next from csr1 into :c#_key;
    if sqlcod = 0;
    insert into zuordnung (hier deine feldnamen) values( :kundennummer, :c#_key)
    endif;
    enddo;

    exec sql close csr;

    Dieter

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Am einfachsten ist ein:
    Insert into MyFiLeA
    Select blabla from MyFileB
    where ...
    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

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.120
    Noch kürzer wäre es, mit SQL direkt alle Sätze aus der geraeteDB in die zuordung zu schreiben. Ich weiß jetzt nicht die genaue Syntax, aber das müsste so ähnlich aussehen:

    exec sql insert into zuordnung select :kundennummer, xx_key from geraeteDB.

    Die Frage ist natürlich, ob du in deiner Zuordnungstabelle noch weitere Schlüssel (z.B. eine Record-ID) selbst vergeben musst. Dann könntest du ggf. eine UDF schreiben, die das erledigt.

    Dieter

  5. #5
    Registriert seit
    Sep 2016
    Beiträge
    45
    Stimmt, auf die Möglichkeit mit einem Cursoer bin ich wie du siehst gar nicht gekommen >.<
    Das ist genau die elegantere Lösung die mir vorschwebte xD Als ich mir meins überlegte hatte dachte ich auch das ist doch irgendwie unnötig so nun weis ich es war so.

    Dank dir!

    EDIT: Die Lösung von Fuerchau sieht auch gut aus, vllt. sogar noch ein bisschen eleganter, oder?
    Auch an dich ein Danke Fuerchau

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Zumal der Select zum Inserts ein Fullselect ist, also auch Grouping/Joins/Derivedtables...
    Damit lassen sich ganze Datenberge komfortabel umkopieren und verarbeiten.
    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
    Mar 2002
    Beiträge
    5.287
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Zumal der Select zum Inserts ein Fullselect ist, also auch Grouping/Joins/Derivedtables...
    Damit lassen sich ganze Datenberge komfortabel umkopieren und verarbeiten.
    ... die Eleganz ist allerdings futsch, wenn der insert into select beim 17. Satz von 76 an irgendwas scheitert - ohne Commit geht das schon garnicht!!!

    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/

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    So kleinlich bin ich da nicht, da meine SQL's dieser Art zu 99,995% nicht scheitern.
    Immerhin kann man den Select ja so schreiben, dass z.B. 0-Division nicht auftritt (u.v.m.).
    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
    Mar 2002
    Beiträge
    5.287
    ... wenn der abraucht, dann wegen einer constraint (unique, not null, referential etc.) oder einem Lock - gegen letzteres ist kein Kraut gewachsen und ersteres kann selbst bei maximaler Sorgfalt vorkommen, wenn ein anderer Insert oder ein delete dazwichen funkt.
    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. Webservice REST, mehrere Datensätze zurückgeben
    By Peet in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-09-16, 10:26
  2. Löschen abhängiger Datensätze in 2 Dateien mit SQL
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 18-04-16, 17:18
  3. delete von 100 Mill. Datensätze
    By tt0ny in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 07-12-15, 07:14
  4. gelöschte Datensätze
    By FP in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 27-05-03, 15:24
  5. XML-Datensätze aus ext. Printerfiles ohne Programmierung erzeugen
    By Klaus in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 17-12-02, 12:47

Berechtigungen

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