-
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
-
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
-
Am einfachsten ist ein:
Insert into MyFiLeA
Select blabla from MyFileB
where ...
-
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
-
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
-
Zumal der Select zum Inserts ein Fullselect ist, also auch Grouping/Joins/Derivedtables...
Damit lassen sich ganze Datenberge komfortabel umkopieren und verarbeiten.
-
Zitat von Fuerchau
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
-
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.).
-
... 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.
Similar Threads
-
By Peet in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 06-09-16, 10:26
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 18-04-16, 17:18
-
By tt0ny in forum IBM i Hauptforum
Antworten: 14
Letzter Beitrag: 07-12-15, 07:14
-
By FP in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 27-05-03, 15:24
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks