-
vielen dank,
fenced habe ich bereits erfolglos ausprobiert, kannst du mir ein beispiel für die zweite lösung geben, damit ich nicht im referenzbuch stundenweise suchen muss.
noch mal vielen dank
roman
-
Genau so, wie oben angegeben.
-
... Du meinst mit 2. Lösung die SEQUENCE?
Wenn Ja ein Sequence Object wird wie folgt erstellt:
Code:
CREATE SEQUENCE HSCOMMON10/MYSEQUENCE
AS INTEGER START WITH 1 INCREMENT BY 1
NO ORDER NO CYCLE
NO MINVALUE NO MAXVALUE
CACHE 20;
Am einfachsten geht es mit dem Wizard im iSeries Navigator.
Bei Sequence Objekten brauchst Du keine UDF, sondern kannst direkt beim Insert oder Update den nächsten Wert anfordern.
Code:
Insert MySchema/MyFile
Values (Next Value For MySequence, .....)
Insert MySchema/MyFile
as Select Next Value For MySequence, ....
Update MySchema/MyFile
set Field = Next Value For MySequcence ...
Birgitta
-
vielen dank für das beispiel, so funktioniert es. es ist zwer nicht 'die' lösung, die ich gesucht habe, weil alle anderen programme schreiben sätze native ein und somit wird die sequenz nicht angepasst, ich werde aber für mein job eine temp-sequenz mit startwert = maxwert+1 erstellen (vorher tabelle exclusive sperren) und dann kann ich mein massen-insert machen. mich würde aber die ursprüngliche frage trotzdem interessieren, weil zb. für werte wie 'das datum der letzten bestellung' kann ich keine sequenz verwenden. sollte jemand eine idee habe - her damit.
noch mal vielen dank für alle antworten und einen schönen tag noch
roman
-
Du kannst natürlich auch für deine anderen Programme den nächsten Wert in der Sequence über eine SET-Anweisung ermitteln und anschließend in das Original-Datei-Feld umladen.
Ich habe z.T. solche Ermittlungen in eine eigene Prozedur gepackt, dann muss man die bestehenden Programme nicht auf embedded SQL ändern.
Beispiel:
Code:
/Free
Exec SQL Set :MyField = Next Value For MySequence;
Write MyFileF;
/End-Free
Birgitta
-
... Was die letzte Zeitmarke angeht, so kann mit der Funktion GENERATE_UNIQUE () ein eindeutiger Wert (auch wenn innerhalb der gleichen Mikrosekunde mehrere Einträge erfolgen) generiert werden, in dem die aktuelle Zeitmarke verschlüsselt ist.
Mit der Skalaren Funktion TIMESTAMP kann man die Zeitmarke aus diesem generierten eindeutigen Wert ermitteln.
Allerdings ... das Ergebnis aus GENERATE_UNIQUE() ist im Format "CHAR(13) for BIT DATA".
In SQL-Tabellen können Spalten mit dieser Formatierung angelegt werden. Für DDS Tabellen müsste das Ergebnis nach Alpha gecastet werden.
Beispiel:
Code:
Select Generate_Unique(), Timestamp(Generate_Unique())
From MyFile
Birgitta
-
noch mal vielen dank an alle, die lösung funktioniert jetzt und wird getestet.
mfg
roman
Similar Threads
-
By Nils_V in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 18-07-16, 09:49
-
By Peder in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 06-12-06, 08:15
-
By ILEMax in forum NEWSboard Programmierung
Antworten: 25
Letzter Beitrag: 18-09-06, 13:39
-
By jakarto in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-07-06, 13:41
-
By HACHIMAN in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 22-05-06, 09:48
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