Anmelden

View Full Version : SQL create table



Armin
26-05-09, 14:21
Hallo zusammen.

Bisher erstellte ich meine Files per DDS. Da ich nun aber CLOB benötige muss SQL ran. Funktioniert auch soweit.

Nun aber zwei Fragen:
1. Gibt es denn keine Möglichkeit zum Spaltennamen einen Alias bzw. einen Kommentar ähnlich COLHDG anzugeben, der dann in Query anzeigt wird?

2. Sollte man die Feldart CLOB näher spezifieren? Wird ggf. unnötig Platz verbraten?

Besten Dank Leute

Fuerchau
26-05-09, 14:30
zu 1) es gibt diverse "LABEL ON" um die Tabelle und Spalten zu benennen.

zu 2) der Default ist (glaube ich 1MB) und belegt tatsächlich nur dann Platz wenn Daten gefüllt werden.

Einen Alias für den Spaltennamen gibt es so nicht sondern der SQL-Name ist der Alias-Name, wenn er nicht den Systemnamen entspricht. In diesem Fall wird ein Systemname vergeben.

Zu Ergänzung gibts dann noch:

"Mein langer Name" FOR COLUMN MEINLNAM

Pikachu
26-05-09, 14:30
Zu 1. siehe LABEL ON (http://publib.boulder.ibm.com/iseries/v5r2/ic2929/info/db2/rbafzmstlabelon.htm#HDRLABELON).

Armin
26-05-09, 14:51
Besten Dank für die rasche Antwort.

LABEL ON ist ausprobiert.
Query zeigt den Text als Spaltenüberschrift aber leider nicht bei der Feldauswahl!?

Bezüglich dem Hinweis "Mein langer Name" FOR COLUMN MEINLNAM" steh ich auf der Leitung. Was soll ich damit tun?

B.Hauser
26-05-09, 16:15
Hallo,

Wenn Du weiterhin mit native I/O auf die Tabellen zugreifen möchtest, darf der Spalten-Namen 10 Zeichen nicht überschreiten. Das gleiche gilt, wenn die Tabellen in den F-Bestimmungen in RPG angegeben werden sollen.

Mit SQL können Datei/Tabellen und Feld/Spalten-Namen bis zu 128 Zeichen lang definiert werden. Bei längeren Namen wird zusätzlich automatisch ein 10-stelliger System-Name (Alias) generiert. Der System-Name setzt sich aus den ersten 5 Stellen des langen Namens + einem laufenden Zähler zusammen. Zum einen ist diese Namensgebung nicht unbedingt aussagefähig und zum anderen ist nicht garantiert, dass bei einer erneuten Erstellung der gleichen Tabelle für die gleichen Spalten die gleichen System-Namen generiert werden.

Mit dieser Variange MeinLangerName For KurzName, kann zusätzlich zu dem langen Namen ein kurzer (max. 10 Stellen) langer System-Name festgelegt werden. Beim erneuten Erstellen des Objekts wird wieder der gleiche vorgegebene System-Name generiert.



Create Table MySchema/MyTable
(MeinLangerFeldName For KurzName Integer,
MeinAndererLangerName For SonstName Char(10));


Mit native I/O kann der kurze Namen verwendet werden, während in SQL sowohl der lange als auch der kurze Namen verwendet werden kann.

Prüfe nochmals welchen Label On Du verwendet hast. Ich bekomme die Column Headings und Texte beim Query angezeigt. Allerdings definiere ich auch immer das Column Heading (nur is 'irgendwas') und den Text (Text is 'irgendwas'). Falls Du einen Kommentar defniert hast, wird dieser nicht angezeigt.


Ein LOB kann bis zu 2 Gig groß sein. Wenn sicher ist, dass die LOBs kleiner sind, würde ich trotzdem eine maximale Größe vorgeben.

Armin
27-05-09, 07:29
Label on SPALTE is 'Spaltenüberschrift'
Label on SPALTE text is 'Feldbeschreibung'

super erklärt - vielen Dank euch allen. :)