PDA

View Full Version : SELECT auf eine Datei mit Timestamp-Feldern



Seiten : [1] 2

pb400
21-04-10, 09:38
Hallo Forum,

ich möchte über eine SELECT-Anweisung (Embedded SQL in ILE RPG) einen Datensatz in eine Datenstruktur einlesen.

Der Datensatz enthält zwei Timestamp-Felder. Nun bekomme ich mit der Anweisung SELECT * INTO :Struktur... die Inhalte aller Felder in die Datenstruktur, bis auf die der Timestamp-Felder.

Weiss jemand warum oder noch besser wie man die Information in die Datenstruktur bekommt?

Danke und Gruß,
pb400

BenderD
21-04-10, 09:49
... indem man es richtig macht, was du falsch machst, kann man hier nur raten, weil man nicht sieht was du machst!!!


Hallo Forum,

ich möchte über eine SELECT-Anweisung (Embedded SQL in ILE RPG) einen Datensatz in eine Datenstruktur einlesen.

Der Datensatz enthält zwei Timestamp-Felder. Nun bekomme ich mit der Anweisung SELECT * INTO :Struktur... die Inhalte aller Felder in die Datenstruktur, bis auf die der Timestamp-Felder.

Weiss jemand warum oder noch besser wie man die Information in die Datenstruktur bekommt?

Danke und Gruß,
pb400

pb400
21-04-10, 10:11
Hallo BenderD,

ich habe das folgendermassen versucht:
exec sql
SELECT *
INTO :Out_Struktur
FROM DB_FILE
WHERE...

wobei Out_Struktur so definiert ist:
D Out_Struktur E DS ExtName(DB_FILE) Prefix(Out_)

Wenn ich die Feldnamen explizit angebe, also so:
SELECT CRTDAT
INTO :Out_CrtDat
FROM DB_FILE
WHERE...
bekomme ich den Wert des Timestamps in Out_CrtDat. (CRTDAT ist als Timestamp definiert)

Wenn ich aber über Select * alle Felder der Datei haben will, ist das Feld Out_CrtDat nicht gefült.

Gruß,
pb400

andreaspr@aon.at
21-04-10, 10:15
Arbeitest du zufällig mit V6R1? Und ist das Timestamp-Feld zufällig als Hidden-Field definiert?

Wenn ja, dann versuch mal ein Select All * From ...

pb400
21-04-10, 10:25
Ja, wir arbeiten mit V6R1. SELECT ALL * hat leider auch nicht geholfen. :( Trotzdem Danke!

BenderD
21-04-10, 10:31
... wenn das Feld in der DS enthalten ist (sieht man in der Umwandlungsliste) und keine SQL Warnings zurück kommen (sieht man am einfachsten im debug im Job) würde ich da mal nach dem PTF Stand sehen und defect problem an IBM reporten.

D*B


Hallo BenderD,

ich habe das folgendermassen versucht:
exec sql
SELECT *
INTO :Out_Struktur
FROM DB_FILE
WHERE...

wobei Out_Struktur so definiert ist:
D Out_Struktur E DS ExtName(DB_FILE) Prefix(Out_)

Wenn ich die Feldnamen explizit angebe, also so:
SELECT CRTDAT
INTO :Out_CrtDat
FROM DB_FILE
WHERE...
bekomme ich den Wert des Timestamps in Out_CrtDat. (CRTDAT ist als Timestamp definiert)

Wenn ich aber über Select * alle Felder der Datei haben will, ist das Feld Out_CrtDat nicht gefült.

Gruß,
pb400

B.Hauser
21-04-10, 17:20
Ich denke das ist ein Bug und sollte gemeldet werden.
Ich bin in den letzten Tagen in ein ähnliches Problem gelaufen. Timestamp-Felder in einer Datenstruktur wurden beim Fetch nicht gefüllt, während alle anderen Werte (auch von echten Datums- und Zeitfeldern) korrekt gefüllt waren.

Auf die Schnelle blieb mir nichts anderes übrig, als den Datensatz nochmals zu Fuss klassisch zu CHAINEN.

@Andreas

Wenn ja, dann versuch mal ein Select All * From ...
Hatten wir doch schon mal! Anderes Forum, anderer Ort.

Beim SELECT ALL werden alle Zeilen angezeigt, im Gegensatz zu SELECT DISTINCT, bei dem Duplikate nur einmalig angezeigt werden. SELECT ALL hat allerdings keinen Einfluß auf etwaige hidden Felder, die bleiben weiterhin unsichtbar.

Birgitta

andreaspr@aon.at
22-04-10, 07:24
@Birgitta: Hast natürlich recht!

BenderD
22-04-10, 07:47
... das all in der select Klausel ist ein reines Füllwort und kann weggelassen werden, will man die Doubletten nicht haben, muss distinct angegeben werden.

Beim union gibt es das Schlüsselwortpärchen auch, da ist es umgekehrt, da ist distinct default und kann weggelassen werden und all muss angegeben werden (select... union all...select...), wenn man die Doubletten haben will.

D*B



Beim SELECT ALL werden alle Zeilen angezeigt, im Gegensatz zu SELECT DISTINCT, bei dem Duplikate nur einmalig angezeigt werden. SELECT ALL hat allerdings keinen Einfluß auf etwaige hidden Felder, die bleiben weiterhin unsichtbar.

Birgitta

Fuerchau
22-04-10, 08:53
Nunja, das liegt an ggf. abweichender Definition zwischen RPG und SQL.
Ich habe das noch mal getestet und mit folgender Einstellung auf V5R4 klappt's problemlos:

h datfmt(*iso) timfmt(*hms)

exec sql set option datfmt=*iso, timfmt=*hms;

Dann kommen auch korrekt die Timestamps.