-
Hierfür sind 2 verschiedene SQL's erforderlich, da SQL keinen UpdateInsert kennt.
1.
Update filea a
set a.f2 = (select b.f2 from file b where a.f1=b.f1)
where a.f1 in (select b.f1 from file b)
2.
insert into file a
select f1, ... from file b
where b.f1 not in (select c.f1 from file c)
PS:
Mit meinem SQLCPY geht so was spielend leicht
-
Kannst du mir noch ein paar Infos zu dem SQLCPY geben?
-
Nunja, in der F1-Hilfe ist eigentlich alles erklärt (nach Installation).
Aber das wesentliche findest du hier:
Software
-
Hallo,
ich versuche meine Lösung noch ein wenig zu erweitern und möchte dazu einen SQL bauen, der das Update auf verschiedene Files machen kann, unabhängig von der Anzahl der Felder. So könnte ich dies als eine Art Modul verwenden und muss es nicht für jede Datei individuell aufbauen.
 Zitat von Fuerchau
1.
Update filea a
set a.f2 = (select b.f2 from file b where a.f1=b.f1)
where a.f1 in (select b.f1 from file b)
Der SQl sollte dabei etwas so aussehen, wie schon vorgeschlagen, aber mit mehreren SET statements. Das Problem für mich ist nun aber, ich weiß nie wie viele Felder die Tabelle haben kann. Lediglich das Maximum kann ich benennen.
Hat jemand eine Idee, wie ich das machen könnte?
Vielen Dank.
Matthias
-
ich denke da mußt du mit dynamischen SQL-Statements arbeiten. Weißt du denn an einer stelle des Programms (nicht im SQL-Statement), um welche Felder es sich handelt?
-
Eigentlich ja, wenn ich das Programm aufrufe übergebe ich die entsprechende Datei als Parameter. Dann könnte man die Zahl ja auslesen.
Allerdings, dynamisches SQL ist mir fremd. Das bedeutet ja auch HLL (RPG), eine solche beherrsche ich leider nicht.
Gruß
Matthias
-
Um was für ein Programm handelt es sich denn? Um ein RPG-Programm??
Beispiele für dynamisches SQL findest du hier im Forum:
-Stichwort EXECUTE IMMEDIATE mit SQL Befehl als String in einer Variablen
-Alternativ DECLARE, PREPARE, EXECUTE
-
Du kannst im QMQRY beliebge Variablen eingeben. Allerdings darf die Länge jeder einzelnen Variable 55 nicht übersteigen.
Du kannst also folgendes tun:
&VAR1&VAR2&VAR3....&VAR10
Zu Laufzeit strickst du deinen SQL im CLP zusammen und übergibst per SETVAR den Inhalt in 55er Blöcken:
dcl &mysql *char 550
chgvar &mysql ('update ....')
strqmqry ...
setvar ((VAR1 %sst(&mysql 1 55) (VAR2 %sst(&mysql 56 55) ... (VAR10 %sst(&mysql 496 55))
Similar Threads
-
By e_sichert in forum IBM i Hauptforum
Antworten: 21
Letzter Beitrag: 28-11-06, 20:43
-
By remo2010 in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 24-11-06, 16:24
-
By Stoeberl in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 13-11-06, 14:30
-
By peter.kinne in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 29-09-06, 13:33
-
By CAL in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 23-06-06, 10:03
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