-
PF anlegen
hallo zusammen,
ich hab ne Frage..
Ich möchte eine physische Datei anlegen, die eine variable Feldlänge aber maximal bspw. 1000 Zeichen hat. Unter SQL heißt der Datentyp VARCHAR(länge), Gibt es eine ähnliche Funktion auf der AS400??
Danke im Voraus!
Vicky
-
 Zitat von Vicky-B
Unter SQL heißt der Datentyp VARCHAR(länge), Gibt es eine ähnliche Funktion auf der AS400??
Vicky
Hallo Vicky,
gerüchteweise kann auch die AS/400 SQL verstehen 
Probier mal STRSQL (falls 5722ST1 installiert), alternativ über den Operations Navigator.
-h
-
Unsere Maschine spricht sql :-) Aber es ist besser bzw. ist ne Vorgabe, Dateien auf dem herkömlichen Wege zu erstellen!
Noch jmnd. Tipps???
Danke!
Vicky
-
variable länge
 Zitat von Vicky-B
Unsere Maschine spricht sql :-) Aber es ist besser bzw. ist ne Vorgabe, Dateien auf dem herkömlichen Wege zu erstellen!
Noch jmnd. Tipps???
Danke!
Vicky
wie wärs mit nem blick ins handbuch?
http://publib.boulder.ibm.com/iserie...6/c4157150.pdf
k.
-
 Zitat von Vicky-B
Unsere Maschine spricht sql :-) Aber es ist besser bzw. ist ne Vorgabe, Dateien auf dem herkömlichen Wege zu erstellen!
Noch jmnd. Tipps???
Danke!
Vicky
Warum sollte es besser sein eine Datei mit DDS anstatt mit SQL zu beschreiben?
Im Gegenteil die Verwendung von SQL-Tabellen gegenüber DDS beschriebenen Dateien bringt sogar Performance-Vorteile, da die Daten-Validierung erst beim Schreiben und nicht wie in DDS-beschriebenen Dateien schon beim Lesen erfolgt!
Aber es gibt auch im DDS die Möglichkeit Felder mit variabler Länge zu definieren. Das entsprechende Schlüssel-Wort lautet VARLEN. In SQL kann durch die Angabe von ALLOCATE eine bestimmte Länge vordefiniert werden. Ist dies auch im DDS erforderlich, wird die Länge in Klammern bei VARLEN angegeben, also z.B. VARLEN(30). Die Maximal-Länge wird wie bei alphanumerischen Feldern mit fixer Länge angegeben.
Birgitta
-
Hallo Brigitte,
ich habs ausprobiert und es sieht folg.massen aus:
A SZBEMERK 200A VARLEN(200)
Leider kann ich danach nix mehr schreiben. Weißt du woran es liegen könnte???
DANKE
Vicky
-
 Zitat von Vicky-B
Hallo Brigitte,
ich habs ausprobiert und es sieht folg.massen aus:
A SZBEMERK 200A VARLEN(200)
Leider kann ich danach nix mehr schreiben. Weißt du woran es liegen könnte???
DANKE
Vicky
Ich nehme an, dass Du versuchst mit SQL zu schreiben.
Welchen Fehlercode oder SQL-Status erhälst Du nach dem Insert-Statement?
Es könnte an der Commitment-Steuerung liegen.
SQL versucht immer unter Commitment Control zu schreiben oder upzudaten, sofern nichts anderes angegeben wurde.
Dazu müssen die Dateien (Tabellen) im Journal aufgezeichnet werden. Vermutlich hast Du Deine physische Datei nur umgewandelt und vergessen sie im Journal zu registrieren (STRJRNPF).
SQL erledigt die Registrierung überigens automatisch, sofern das Journal in der gleichen Bibliothek vorhanden ist.
Birgitta
-
VARLEN(200) heisst: Es sind mindesten 200 Zeichen erforderlich !
Definiere einfach:
A SZBEMERK 200A VARLEN
Der Klammerwert hinter VARLEN definiert die Mindestlänge !!!
A SZBEMERK 200A VARLEN(10) <= mindstens 10 max. 200
-
 Zitat von Fuerchau
VARLEN(200) heisst: Es sind mindesten 200 Zeichen erforderlich !
Definiere einfach:
A SZBEMERK 200A VARLEN
Der Klammerwert hinter VARLEN definiert die Mindestlänge !!!
A SZBEMERK 200A VARLEN(10) <= mindstens 10 max. 200
Das ist so nicht korrekt!
VARLEN(200) heißt, dass in jedem Satz 200 Byte für die Feld-Inhalte reserviert werden, und nicht dass mindestens 200 Zeichen erforderlich sind. In dem Feld können durchaus nur 5 Zeichen stehen.
Bei VARLEN(10) und einer Maximal-Länge von 200 Byte werden in jedem Datensatz 10 Byte reserviert. Muss ein Text, der länger als 10 Zeichen ist gespeichert werden, wird in dem Original-Feld nur ein Verweis auf eine Adresse in der Overflow- oder Spil-Area hinterlegt, unter der der komplette String dann gespeichert wird. Wir der Datensatz inclusive dieses Feldes eingelesen, muss zunächst die Adresse aufgelöst werden und die Daten aus der Overflow-Area eingelesen werden. Es ist also eine zusätzliche Aktion erforderlich.
Wird VARLEN ohne Längenangabe definiert, werden alle Daten in der Overflow-Area gespeichert, wenn die Maximal-Länge größer als 30 Bytes ist. Bei VARLEN-Feldern mit einer Maximal-Länge unter 30 Bytes wird DB2 UDB intern immer die Maximal-Länge im Datensatz reserviert.
Von Performance-Gesichtspunkten aus sollte die reservierte Länge so fest gelegt werden, dass ca. 90-95 % aller Einträge in diese reservierte Länge passen und nur einige Ausreißer in der Overflow-Area gespeichert werden.
Birgitta
-
Hallo zusammen,
ich hab jetzt folgendermassen das Feld definiert:
A SZBEMERK 200A VARLEN(1)
wenn man dann mit upddta in die Datei reingeht, wird das Feld mit 200 Zeichen auch angezeigt (ist auch genau so mit runqry *n datei. Wo ist dann der Vorteil bei einer solchen DDS? Ich dachte der Speicher-Platz wird erst dann zur Verfügung gestellt, wenn die Inhaltslänge bekannt ist 
Danke für die Antworten!
Vicky
-
 Zitat von Vicky-B
Hallo zusammen,
ich hab jetzt folgendermassen das Feld definiert:
A SZBEMERK 200A VARLEN(1)
wenn man dann mit upddta in die Datei reingeht, wird das Feld mit 200 Zeichen auch angezeigt (ist auch genau so mit runqry *n datei. Wo ist dann der Vorteil bei einer solchen DDS? Ich dachte der Speicher-Platz wird erst dann zur Verfügung gestellt, wenn die Inhaltslänge bekannt ist
Danke für die Antworten!
Vicky
Was Du siehst und was intern in der Datenbank passiert sind 2 Paar Stiefel! UPDDTA und interaktives SQL usw. zeigen aufbereitete Versionen des Datensatzes an, d.h. die Daten aus der Overflow-Area sind an der entsprechenden Stelle eingefügt. Wenn Du einen neuen Datensatz anlegen willst, wird also angezeigt, wie viel Platz Du maximal zur Verfügung hast. Der Rest, wo und in welcher Form die Daten abgelegt werden geschieht erst in dem Moment, wenn Du Datenfreigabe drückst.
Warum man einen bestimmten Bereich reserviert?
Ganz einfach um Platz zu sparen. (Okay in der heutigen Zeit, in der Platten-Platz "nichts mehr kostet" mag dies vielleicht nicht mehr relevant sein, aber früher!) Angenommen ein alphanumerisches Feld hat eine Maximal-Länge von 32.767 Zeichen und soll irgendwelche Meldungen aufnehmen. Meist handelt es sich dabei im Kurz-Meldungen mit ca. 1024 Zeichen und nur in Ausnahmen wird ein Roman hinterlegt. Warum also in jedem Satz über 30.000 Byte verschwenden?
Auf der anderen Seite bringen natürlich Zugriffe in die Overflow-Area Performance-Einbußen mit sich.
Ob und wieviel Speicher im Datensatz reserviert werden sollte, hängt jeweils von der Strategie ab, die verfolgt wird.
Birgitta
-
Hallo.
s. Performance-Hinweis von Birgitta.
Gruß
Similar Threads
-
By K_Tippi in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 24-01-07, 06:37
-
By GraueEminenz in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 05-01-07, 11:47
-
By wrkas400 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 19-12-06, 09:23
-
By kuempi von stein in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 07-11-06, 08:33
-
By KaFi in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 07-10-06, 12:52
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