SQL f. z/OS et al.
- Dieses Thema hat 5 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 16 Jahre, 11 Monaten von
Anonym.
-
AuthorPosts
-
14. September 2006 um 14:48 Uhr #2727
AnonymInaktivLiebe Forumsmitglieder,
ich biete auf http://www.leipelt.de ein OpenSource Tool (für Windows/Linux) für DB2 an.
Im Moment bin ich dabei, ein paar neue Funktionen einzubauen. Ich habe keinen Zugriff auf DB2 für z/OS, OS390 und andere,
möchte aber, dass mein Tool auch mit diesen Versionen funktioniert.
Und da bräuchte ich ein wenig Hilfe.Ich suche die äquivalenten SQL Befehle für die folgenden Befehle, die auf Win/Linux Systemen so lauten:
(SEL ECT im folgenden mit blank, sonst "interner Verarbeitungsfehler" beim posten…)1. Finde heraus, ob eine Tabelle einen Primary Key hat:
SEL ECT COLNAMES FROM
SYSCAT.INDEXES
WHERE TABSCHEMA=’xy‘ AND TABNAME=’abc‘ AND UNIQUERULE=’P’"2. Finde die Spaltennamen und -typen einer Tabelle:
sel ect colname, typename, length, scale, nulls, default, logged, compact, identity, generated
from syscat.columns
where tabschema = ‚xy‘ and tabname =’abc‘ order by colno"3. Finde die Foreign Keys einer Tabelle:
sel ect reftabschema, reftabname, deleterule, updaterule, fk_colnames, pk_colnames
from syscat.references
where tabschema = ‚xy‘ and tabname =’abc’"4. Ermittle die Triggernamen:
sel ect trigschema, trigname
from syscat.triggers
where tabschema = ‚xy‘ and tabname =’abc’"5. Lese den eigentlichen Trigger (als CLOB) mit dem obigen Triggernamen
Sel ect text
from syscat.triggers
where trigschema=’trigschema‘ and trigname = ‚trigname’"Je nach System lauten die Tabellen- bzw. Spaltennamen u.U. anders.
Es wäre sehr nett, wenn mir jemand diese Befehle für nicht-Win/Lin Systeme "übersetzen" könnte (und dazu schreibt,
für welches System die Übersetzung gilt).Vielen Dank
Gregor
15. September 2006 um 10:32 Uhr #3122
AnonymInaktivGregor wrote: Liebe Forumsmitglieder,
ich biete auf http://www.leipelt.de ein OpenSource Tool (für Windows/Linux) für DB2 an.
Im Moment bin ich dabei, ein paar neue Funktionen einzubauen. Ich habe keinen Zugriff auf DB2 für z/OS, OS390 und andere,
möchte aber, dass mein Tool auch mit diesen Versionen funktioniert.
Und da bräuchte ich ein wenig Hilfe.Ich suche die äquivalenten SQL Befehle für die folgenden Befehle, die auf Win/Linux Systemen so lauten:
(SEL ECT im folgenden mit blank, sonst "interner Verarbeitungsfehler" beim posten…)1. Finde heraus, ob eine Tabelle einen Primary Key hat:
 SEL ECT COLNAMES FROM
 SYSCAT.INDEXES
 WHERE TABSCHEMA=’xy‘ AND TABNAME=’abc‘ AND UNIQUERULE=’P’" SEL ECT creator, name FROM SYSIBM.SYSINDEXES
WHERE TBCREATOR = ‚xy‘ AND TBNAME = ‚abc‘ AND UNIQUERULE = ‚P‘;
Ergebnis Indexname des Prim.Key2. Finde die Spaltennamen und -typen einer Tabelle:
 sel ect colname, typename, length, scale, nulls, default, logged, compact, identity, generated
 from syscat.columns
 where tabschema = ‚xy‘ and tabname =’abc‘ order by colno"SEL ECT name, coltype, length, scale, nulls, default, createdts FROM SYSIBM.SYSCOLUMNS
WHERE TBCREATOR = ‚xy‘ AND TBNAME = ‚abc‘ ORDER BY COLNO;Mit logged,compact,identity kann ich nichts anfangen.
3. Finde die Foreign Keys einer Tabelle:
 sel ect reftabschema, reftabname, deleterule, updaterule, fk_colnames, pk_colnames
 from syscat.references
 where tabschema = ‚xy‘ and tabname =’abc’"SEL ECT relname, colname, colno, colseq FROM SYSIBM.SYSFOREIGNKEYS
WHERE CREATOR = ‚xy‘ AND TBNAME = ‚abc‘;4. Ermittle die Triggernamen:
 sel ect trigschema, trigname
 from syscat.triggers Â
 where tabschema = ‚xy‘ and tabname =’abc’"SEL ECT schema, name FROM SYSIBM.SYSTRIGGERS
WHERE TBOWNER = ‚xy‘ AND TBNAME = ‚abc‘;5. Lese den eigentlichen Trigger (als CLOB) mit dem obigen Triggernamen
 Sel ect text
 from syscat.triggers
 where trigschema=’trigschema‘ and trigname = ‚trigname’"SEL ECT text FROM SYSIBM.SYSTRIGGERS
WHERE SCHEMA = ‚trigschema‘ AND NAME = ‚trigname‘;Je nach System lauten die Tabellen- bzw. Spaltennamen u.U. anders.
Es wäre sehr nett, wenn mir jemand diese Befehle für nicht-Win/Lin Systeme "übersetzen" könnte (und dazu schreibt,
für welches System die Übersetzung gilt).Das gilt alles für DB2 Version 8!
Vielen Dank
GregorSchöne Grüße
dobo
😀
15. September 2006 um 12:13 Uhr #3398
AnonymInaktivErstmal vielen Dank für die Antwort. Ein paar Dinge fehlen mir noch:
1. SEL ECT creator, name FROM SYSIBM.SYSINDEXES
WHERE TBCREATOR = ‚xy‘ AND TBNAME = ‚abc‘ AND UNIQUERULE = ‚P‘;
Ergebnis Indexname des Prim.KeyHier brauche ich den Namen der Spalte, in der die ColNames des Primary Keys stehen. Der Inhalt der gesuchten Spalte sollte ungefähr so aussehen: ‚+S1+S2+S3‘, wobei S1…S3 den Primary Key bilden.
Der Befehl ‚SEL ECT colnames(?) FROM SYSIBM.SYSCOLUMNS….‘ soll dann dann ‚+S1+S2+S3‘ liefern.
2. LOGGED und COMPACT beziehen sich auf Spalten, die LOBs enthalten. Da sollte dann ‚Y‘ oder ‚N‘ drinstehen.
In meinem System stehen die gesuchten Spalten in SYSIBM.SYSCOLUMNS zwischen LONGLENGTH und NQUANTILES.IDENTITY bezieht sich auf Tabellen, die eine GENERATED ALWAYS IDENTITY Spalte haben, in meinem System die letzte Spalte in SYSIBM.SYSCOLUMNS.
3. Da fällt mir auf, dass ich mir das Leben unnötig schwer mache…evtl. ist es besser, aus SYSIBM.SQLFOREIGNKEYS zu lesen statt aus SYSCAT.REFERENCES….Ich muss das erstmal überdenken.
4. und 5. sind perfekt, danke.
Auf welches Betriebssystem bezieht sich diese Übersetzung? z/OS?
15. September 2006 um 12:16 Uhr #3570
AnonymInaktivErstmal vielen Dank für die Antwort. Ein paar Dinge fehlen mir noch:
1. SEL ECT creator, name FROM SYSIBM.SYSINDEXES
WHERE TBCREATOR = ‚xy‘ AND TBNAME = ‚abc‘ AND UNIQUERULE = ‚P‘;
Ergebnis Indexname des Prim.KeyHier brauche ich den Namen der Spalte, in der die ColNames des Primary Keys stehen. Der Inhalt der gesuchten Spalte sollte ungefähr so aussehen: ‚+S1+S2+S3‘, wobei S1…S3 den Primary Key bilden.
Der Befehl ‚SEL ECT colnames(?) FROM SYSIBM.SYSCOLUMNS….‘ soll dann dann ‚+S1+S2+S3‘ liefern.
2. LOGGED und COMPACT beziehen sich auf Spalten, die LOBs enthalten. Da sollte dann ‚Y‘ oder ‚N‘ drinstehen.
In meinem System stehen die gesuchten Spalten in SYSIBM.SYSCOLUMNS zwischen LONGLENGTH und NQUANTILES.IDENTITY bezieht sich auf Tabellen, die eine GENERATED ALWAYS IDENTITY Spalte haben, in meinem System die letzte Spalte in SYSIBM.SYSCOLUMNS.
3. Da fällt mir auf, dass ich mir das Leben unnötig schwer mache…evtl. ist es besser, aus SYSIBM.SQLFOREIGNKEYS zu lesen statt aus SYSCAT.REFERENCES….Ich muss das erstmal überdenken.
4. und 5. sind perfekt.
Auf welches Betriebssystem bezieht sich diese Übersetzung? z/OS?
Nochmals danke und viele Grüße
Gregor
27. September 2006 um 11:37 Uhr #3693
AnonymInaktivHi Gregor,
zu 1. fehlt dir noch ein join auf die SYSIBM.SYSKEYS
    Select COLSEQ, COLNAME mit SYSKEYS.IXNAME = SYSINDEXES.NAME
    ORDER BY COLSEQzu 2. Mit LOGGED und COMPACT kann ich auch nichts anfangen. Was bedeuten diese Felder?
    Whatever… LOB Columns kannst Du in der SYSCOLUMNS.COLTYPE Spalte abfragen
    (=BLOB, CLOB, DBCLOB)zu IDENTIFY
   Da hilft sicher ein join SYSCOLUMNS/SYSSEQUENCES
   mit SYSCOLUMNS.TBCREATOR = SYSSEQUENCES.SCHEMA
   UND SYSCOLUMNS.TBCREATOR = SYSSEQUENCES.OWNER
   UND SYSCOLUMNS.NAME = SYSSEQUENCES.NAME
   UND SYSSEQUENCES.SEQTYP = ‚I‘Und das bezieht sich auf Z/OS
Hoffe es hilft
greetz
Perix     😎
4. Oktober 2006 um 12:19 Uhr #3778
AnonymInaktivHi Perix,
vielen Dank erstmal, ich komme erst nächste Woche zum Ausprobieren.
-
AuthorPosts
You must be logged in to reply to this topic.