Overblog
Editer la page Suivre ce blog Administration + Créer mon blog
/ / /

Reihen aus dem Nichts generieren... dieses Thema wurde schon so oft gehandelt.
Trotzdem will ich schon längst meine eigene Tutorial schreiben, habe aber nie den Mut gehabt, sie in einem Stück zu tun !

 

Dann mache ich es einfach Schritt für Schritt...

 

1) CONNECT BY level

 

CONNECT BY ermöglicht Abfragen von Baumstruckturen : typisch können für eine bestimmte Reihe, die Kind-Knoten rekursiv verbindet werden.
Wird so geschrieben : SELECT ... FROM ... CONNECT BY PRIOR idspalte = elternspalte

 

Aber man darf auch was ganz schreckliches geschrieben :

 

SELECT level l
FROM dual
CONNECT BY level <= 5;

 

         L
----------
         1
         2
         3
         4
         5

 

Die dual Reihe verbindet sich mit sich selbst solange "level <= N" ! (level ist die Hierarchiestufe)

 

Klappt prima, schnell, venigstens seit 9. Version... aber ist zweiffellos Bugusing !

 

2) MODEL Klause

 

Ab 10g gibt's eine komische neue Klause : MODEL.
Aus irgend einer Abfrage, können die Ergebnisse fast so wie in Excel verarbeitet werden :
Reihe ändern, hinzufügen, iterative / rekursive Irrsinne treiben, usw.

 

Hier werden wir einfach übesehen, dass die Tabellen auch mehrere dimension haben...
So werden in der DIMENSION Klause der Index definiert, und in der MEASURES klause die Spalten.

 

Bei der Zuweisung von Spalten werden die Reihen automatisch hinzugefügt.

 

Eine einfache Schleife generiert die gewünschten Reihen :

 

SELECT n
FROM dual
MODEL
DIMENSION BY (1 n)
MEASURES (5 m)
RULES
    (m[FOR n FROM 2 TO m[1] INCREMENT 1] = null)

 

         N
----------
         1
         2
         3
         4
         5

 

Effiziente Methode, aber soooo schwere Syntax (zum kotzen, werde ich mich daran nie erinnern)

 

 

Fortsetzung folgt...

 

Partager cette page
Repost0