-
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!)
-
Zitat von Robi
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
-
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!)
-
Zitat von Robi
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
-
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!)
-
Zitat von Robi
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
-
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!)
-
Zitat von Robi
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
-
Ich dachte immer bei einem fetch for x rows müsste die DS immer OCCUR definiert sein, nicht DIM?!?!?!
-
... typischer Fall vonDenkste :-)
Similar Threads
-
By JotSo in forum IBM i Hauptforum
Antworten: 9
Letzter Beitrag: 22-12-15, 12:08
-
By Robi in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 22-05-15, 07:31
-
By AndreasH in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 08-05-15, 13:09
-
By Robi in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 09-03-15, 15:56
-
By MGJ79 in forum NEWSboard Programmierung
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
-
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