-
SELECT auf eine Datei mit Timestamp-Feldern
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
-
... indem man es richtig macht, was du falsch machst, kann man hier nur raten, weil man nicht sieht was du machst!!!
 Zitat von pb400
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
-
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
-
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 ...
-
Ja, wir arbeiten mit V6R1. SELECT ALL * hat leider auch nicht geholfen. Trotzdem Danke!
-
... 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
 Zitat von pb400
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
-
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
-
@Birgitta: Hast natürlich recht!
-
... 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
 Zitat von B.Hauser
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
-
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.
-
Timestamps haben nur ein einziges Format, nämlich *ISO und da gibt es auch keine Unterschiede zwischen RPG und SQL. (Auch wenn SQL neben dem ISO-Format auch das ANSI-Format erkennt.)
Birgitta
-
Und trotzdem mag der Precompiler halt nicht, wenn die Definitionen wohl unterschiedlich sind.
Wie gesagt, ich habe es ausprobiert und bekomme den Timestamp auch mit "Select *" in die DS korrekt übergeben.
Allerdings mag der Unterschied sein, dass ich einen Cursor verwendet habe und den Fetch verwende.
Similar Threads
-
By schatte in forum NEWSboard Linux
Antworten: 12
Letzter Beitrag: 29-01-08, 14:02
-
By Hubert Brethauer in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 14-03-06, 09:37
-
By deni87991 in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 27-01-06, 13:25
-
By danyautum in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 10-06-05, 14:14
-
By sannefinger in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 17-05-04, 15:19
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