23 December 2007
TeamCity 3.0 - Ein weiteres kostenloses Continous Integration Tool steht zur Verfügung
Praktisch zur gleichen Zeit wie IntelliJ IDEA 7.0 veröffentlich wurde, haben die Entwickler von JetBrains das Continuous Integration Tool TeamCity 3.0 freigegeben. Bisher habe ich jeweils mit CruiseControl(.NET) in Projekten gearbeitet, bin aber seit dem Erwerb von IntelliJ IDEA 7.0 auf TeamCity aufmerksam geworden. Es wird in einer Professional und Enterprise Edition angeboten, wobei die erstere Version kostenlos ist und sich laut JetBrains für kleinere und mittlere Entwicklungsunternehmen eignet. In dieser Version können 20 Softwareprojekte parallel verwaltet werden. Ausserdem können maximal 20 Anwender in TeamCity festgelegt werden. Dies sind aber bereits die einzigen Einschränkungen, welche in der Professional Edition hingenommen werden müssen. Eine Auflistung aller Features von TeamCity findet man hier.
Im direkten Vergleich mit CruiseControl sticht einem die relativ simple und GUI-unterstützte Konfiguration ins Auge, welche ermöglicht, dass sich der Administrator nicht mit einem XML Konfigurationsdokument à la CruiseControl auseinandersetzen muss. Ferner steht für die gängigen IDEs ein Plug-in für TeamCity zur Verfügung, mit welchem man das Continous Integration Tool aus der Entwicklungsumgebung steuern kann.
TeamCity 3.0 ist als Windows Installer, Mac OS X und Linux Setup verfügbar, welches jeweils mit einem integrierten Apache Tomcat mitgeliefert wird. Alternativ steht einem ein Web Application Archive (WAR) für ein Deployment auf einem eigenständigen Application Server.
TeamCity 3.0 macht mir nach ersten kleinen Tests einen sehr ausgereiften Eindruck. Es macht richtiggehend Spass mit TeamCity zu arbeiten, da alles sehr einfach zu konfigurieren ist.
Im direkten Vergleich mit CruiseControl sticht einem die relativ simple und GUI-unterstützte Konfiguration ins Auge, welche ermöglicht, dass sich der Administrator nicht mit einem XML Konfigurationsdokument à la CruiseControl auseinandersetzen muss. Ferner steht für die gängigen IDEs ein Plug-in für TeamCity zur Verfügung, mit welchem man das Continous Integration Tool aus der Entwicklungsumgebung steuern kann.
TeamCity 3.0 ist als Windows Installer, Mac OS X und Linux Setup verfügbar, welches jeweils mit einem integrierten Apache Tomcat mitgeliefert wird. Alternativ steht einem ein Web Application Archive (WAR) für ein Deployment auf einem eigenständigen Application Server.
TeamCity 3.0 macht mir nach ersten kleinen Tests einen sehr ausgereiften Eindruck. Es macht richtiggehend Spass mit TeamCity zu arbeiten, da alles sehr einfach zu konfigurieren ist.
8 December 2007
Groovy 1.5 ist erschienen
Seit dem 08.12.2007 Groovy in der Version 1.5 als stabiler Release erhältlich. Einer der grossen Erweiterungen seit 1.0 ist die sogenannte Joint-Compilation von Groovy/Java Source Code. Dies ermöglicht es Groovy Abhängigkeiten in Java Klassen in einem Buildlauf (z.B. mit Ant) zu kompilieren. Weiter können nun auch GroovyTestCases mit JUnit 4.0 arbeiten. Die Release Notes sind wie immer in Jira von Codehaus zu finden.
Aktuell steht noch kein Windows Installer oder Ubuntu / Debian Paket zum Download bereit. Diese sollen aber in den kommenden Tagen nachgeliefert werden.
Offensichtlich scheint es sich bei diesem Release um den wahrscheinlich letzten Groovy 1.x Release zu handeln. Dies vermute ich, da die Releasekandidaten dieses 1.5 Releases allesamt die Versionsnummer 1.1 trugen. Ich vermute daher, dass die kommenden Erweiterungen von Groovy unter 2.x weitergeführt werden.
Nun kann man gespannt sein und darauf warten, dass Grails erstmals in einer stabilen 1.0 Version veröffentlicht wird.
Aktuell steht noch kein Windows Installer oder Ubuntu / Debian Paket zum Download bereit. Diese sollen aber in den kommenden Tagen nachgeliefert werden.
Offensichtlich scheint es sich bei diesem Release um den wahrscheinlich letzten Groovy 1.x Release zu handeln. Dies vermute ich, da die Releasekandidaten dieses 1.5 Releases allesamt die Versionsnummer 1.1 trugen. Ich vermute daher, dass die kommenden Erweiterungen von Groovy unter 2.x weitergeführt werden.
Nun kann man gespannt sein und darauf warten, dass Grails erstmals in einer stabilen 1.0 Version veröffentlicht wird.
5 November 2007
Exim4 - Lokale Domains einrichten
Exim4 unter Ubuntu (Debian) liesst die lokalen Domains aus der Datei /etc/exim4/domains. Die Domains werden in dieser Datei durch einen Doppelpunkt getrennt. D.h. domain1:domain2:...:domainN.
Exim akzeptiert von den eingetragenen Domänen Post und versucht E-Mail an den entsprechenden Benutzer zu verteilen. Will man nun an den User peter.muster@domain1 eine Email senden und ist peter.muster nicht der Unix Benutzername des benutzers, so kann man unter /etc/aliases einen Alias für peter.muster eintragen. Wenn bspw. der Unix Benutzername von peter.muster pmuster ist, würde der Alias peter.muster: pmuster lauten.
Exim akzeptiert von den eingetragenen Domänen Post und versucht E-Mail an den entsprechenden Benutzer zu verteilen. Will man nun an den User peter.muster@domain1 eine Email senden und ist peter.muster nicht der Unix Benutzername des benutzers, so kann man unter /etc/aliases einen Alias für peter.muster eintragen. Wenn bspw. der Unix Benutzername von peter.muster pmuster ist, würde der Alias peter.muster: pmuster lauten.
3 November 2007
Groovy 1.1 RC2 ist da
Seit dem 2. November 2007 ist der aktuellste Releasekanditat (RC2) von Groovy 1.1 zum Download erhältlich. Es ist der letzte Releasekanditat vor einer weiteren finalen Version von Groovy. Gemäss Roadmap folgt nach diesem Release die finale Version 1.1 von Groovy, welcher in den kommenden Wochen erhältlich sein soll.
Im aktuellen Release wurden Groovy 1.1 vor allem gehärtet, d.h. known issues behoben und Fehlerrückmeldungen aus der Groovy Gemeinde umgesetzt. Detaillierte Angaben findet man in den Release notes.
G2One, die Firma hinter Groovy und Grails, ruft die Anwendergemeinde auf diesen Release wieder um in ihrer Projekte zu integrieren, um eine solide 1.1 Version veröffentlichen zu können. Aufgrund der Verbesserungen in punkto Performance - G2One spricht von ca. 40% schnelleres Groovy als in 1.1RC1 - kann das ganze im Zusammenhang mit Grails sehr interessant werden. Ich werde den neuen Releasekandidaten auf jedenfall in unserem aktuellen Projekt gleich mal integriere und freue mich schon jetzt auf den finalen Release von Groovy 1.1.
Im aktuellen Release wurden Groovy 1.1 vor allem gehärtet, d.h. known issues behoben und Fehlerrückmeldungen aus der Groovy Gemeinde umgesetzt. Detaillierte Angaben findet man in den Release notes.
G2One, die Firma hinter Groovy und Grails, ruft die Anwendergemeinde auf diesen Release wieder um in ihrer Projekte zu integrieren, um eine solide 1.1 Version veröffentlichen zu können. Aufgrund der Verbesserungen in punkto Performance - G2One spricht von ca. 40% schnelleres Groovy als in 1.1RC1 - kann das ganze im Zusammenhang mit Grails sehr interessant werden. Ich werde den neuen Releasekandidaten auf jedenfall in unserem aktuellen Projekt gleich mal integriere und freue mich schon jetzt auf den finalen Release von Groovy 1.1.
14 October 2007
Groovy Baby! - Oder wie man last.fm web services integriert
Groovy bereitet auch mir seit kurzem sehr viel Spass. Ein Beispiel wieso das Arbeiten mit Groovy Spass machen kann, möchte ich an dieser Stelle kurz (mit der Betonung auf kurz) anbringen. Last.fm stellt ein paar Webservices zur Verfügung, mit welchem Anwender wie ich, ihre Profil und Musikdaten abfragen können. Nachfolgend seht ihr wie man mittels Groovy den Webservice anspricht und die Response auf triviale Weise ausliest.
Die Response des Webservice sieht bspw. so aus.
Der nachfolgende Groovy Code "parst" die Response und verarbeitet diese mittels dem Groovy XmlSlurper.
Und schon ist die Top 100 meiner Lieblings Musiker auf der Console ersichtlich. Und die Implementation der Sache kostete mich gerade mal 3 Minuten :). Das ist Groovy.
Die Response des Webservice sieht bspw. so aus.
<topartists user="sa303" type="overall">
<artist>
<name>Ellen Allien</name>
<mbid>2ff63f00-0954-4b14-9007-e19b822fc8b2</mbid>
<playcount>246</playcount>
<rank>1</rank>
<url>http://www.last.fm/music/Ellen+Allien</url>
<thumbnail>
http://userserve-ak.last.fm/serve/50/16045.jpg
</thumbnail>
<image>
http://userserve-ak.last.fm/serve/160/16045.jpg
</image>
</artist>
<artist>
<name>Ein anderer Musiker</name>
<mbid>2ff63f00-0954-4b14-9007-e19b822fc8b2</mbid>
<playcount>246</playcount>
<rank>1</rank>
<url>http://www.last.fm/music/Ellen+Allien</url>
<thumbnail>
http://userserve-ak.last.fm/serve/50/16045.jpg
</thumbnail>
<image>
http://userserve-ak.last.fm/serve/160/16045.jpg
</image>
</artist>
</topartists>
Der nachfolgende Groovy Code "parst" die Response und verarbeitet diese mittels dem Groovy XmlSlurper.
import java.net.URL;
def target = 'http://ws.audioscrobbler.com/1.0/user/sa303/topartists.xml'
def stream = new URL(target).openStream();
def topartists = new XmlSlurper().parse(stream)
topartists.artist.each{
println "${it.rank} - ${it.name} (${it.playcount} mal gehört)"
}
Und schon ist die Top 100 meiner Lieblings Musiker auf der Console ersichtlich. Und die Implementation der Sache kostete mich gerade mal 3 Minuten :). Das ist Groovy.
20 September 2007
NHL 08 - Same shit, different day
Wie bereits in einem vorherigen Post angemerkt, scheint das NHL (07 oder 08) nicht ganz einwandfrei auf meinem neuen Windows Vista zu laufen. Scheinbar ist das Verhalten auf eine von EA nicht unterstützte Grafikkarte unter Windows Vista zurückzuführen.
Der "Registry Hack", welchen ich unter NHL 07 bereits angewendet habe, funktioniert glücklicherweise noch immer unter NHL08. Mann braucht nach wie vor nur folgenden Registry Key zu ändern.
[HKEY_CURRENT_USER\Software\EA SPORTS\NHL07]
"GFX Mode"=dword:00000003
Und schon funktioniert das Ganze auch unter einer "nicht unterstützten" Grafikkarten Hardware. Vielleicht sollte ich doch mal meine Hardware aufrüsten :)
Der "Registry Hack", welchen ich unter NHL 07 bereits angewendet habe, funktioniert glücklicherweise noch immer unter NHL08. Mann braucht nach wie vor nur folgenden Registry Key zu ändern.
[HKEY_CURRENT_USER\Software\EA SPORTS\NHL07]
"GFX Mode"=dword:00000003
Und schon funktioniert das Ganze auch unter einer "nicht unterstützten" Grafikkarten Hardware. Vielleicht sollte ich doch mal meine Hardware aufrüsten :)
5 September 2007
Microsoft und der Kampf gegen Unix Derivate
Auf Slashdot.org bin ich auf einen unterhaltsamen Beitrag gestossen. Offenbar sind auf dem XBox Online Gaming Portal von Microsoft Stichworte wie LINUXRULES oder L I N U X nicht erwünscht. Das Portal weisst die Stichworte unter der Begründung
Hier findet man den Artikel.
Your motto contains inappropriate language. Please try again.zurück. Offensichtlich scheint Microsoft den Kampf gegen die Unix Derivate noch immer zu betreiben (so dass es auch Anwender mitkriegen).
Hier findet man den Artikel.
1 September 2007
Grails 0.6 ist erschienen
Am 31.08.2007 wurde Grails 0.6 (Release Notes) veröffentlicht. Die wichtigsten Neuerung sind u.a. die Integration des Spring WebFlow und die "Joint Groovy/Java" Compilation. Ausserdem konnte Grails wieder um einiges an Performance gut machen. Zu guterletzt wurde auch am Erscheinungsbild gearbeitet. So erscheinen die GSP Views, welche mit Scaffolding erstellt wurden, in einem neuen Look und sehen mehr Web 2.0 ähnlich aus.
Falls die paar Zeilen nun das Interesse geweckt haben kann man auf der Grails Hompage die aktuelle Version herunterladen. Übringes soll dies die letzte 0.x Version gewesen sein. Das Entwicklungsteam um Graeme Rocher arbeitet nun am Releasekanditaten 1.0, welcher laut Homepage das Releasedatum Oktober 2007 hat. Lassen wir uns überraschen. Laut Issue Tracker von Grails gibt es noch viel zu tun.
Falls die paar Zeilen nun das Interesse geweckt haben kann man auf der Grails Hompage die aktuelle Version herunterladen. Übringes soll dies die letzte 0.x Version gewesen sein. Das Entwicklungsteam um Graeme Rocher arbeitet nun am Releasekanditaten 1.0, welcher laut Homepage das Releasedatum Oktober 2007 hat. Lassen wir uns überraschen. Laut Issue Tracker von Grails gibt es noch viel zu tun.
11 June 2007
Inhaltsverzeichnisse mit Microsoft Word
Mittels Lesezeichen kann man in Word Teilverzeichnisse für Abschnitte erstellen. Man muss nur den Text markieren, von welchem man ein Inhaltsverzeichnis erstellen will. Dann den markierten Text mit einem Lesezeichen (Bookmark) versehen und schlussendlich ein Inhaltsverzeichnis (TOC; Table of contents) erstellen.
Das Lesezeichen kann dann im TOC folgendermassen referenziert werden.
{TOC \h\b nameDesBookmarks}
\b steht für die Referenz auf den nachfolgenden Bookmark Namen.
\h lässt die Einträge im Inhaltsverzeichnis als Hyperlinks erscheinen.
Mit der Option \o lassen sich die Ebenen (Überschriften) eingrenzen. Bspw. zeigt das nachfolgende Beispiel nur die Überschriften 1 bis 3 an.
{TOC \h\o "1-3" \b nameDesBookmarks}
Das Lesezeichen kann dann im TOC folgendermassen referenziert werden.
{TOC \h\b nameDesBookmarks}
\b steht für die Referenz auf den nachfolgenden Bookmark Namen.
\h lässt die Einträge im Inhaltsverzeichnis als Hyperlinks erscheinen.
Mit der Option \o lassen sich die Ebenen (Überschriften) eingrenzen. Bspw. zeigt das nachfolgende Beispiel nur die Überschriften 1 bis 3 an.
{TOC \h\o "1-3" \b nameDesBookmarks}
8 June 2007
NHL07 macht unter Vista auch Ärger
Mein Lieblingsspiel verweigert unter Windows Vista jede andere Grafikauflösung als 640x480. Glücklicherweise gibt es in den Internetforen Hilfe. Mittels diesem Windows Registry Skript kann man NHL07 übertölpeln.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\EA SPORTS\NHL07]
"Language ID"=dword:00000000
"Chat Name"="NHL07"
"LastMatchupIP"=""
"LastCommissionerIP"=""
"GFX Mode"=dword:00000003
[HKEY_CURRENT_USER\Software\EA SPORTS\NHL07\Details Settings]
"Offplay Arena"=dword:000000fa
"Offplay Player"=dword:000000fa
"Onplay Arena"=dword:000000fa
"Onplay Player"=dword:000000fa
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\EA SPORTS\NHL07]
"Language ID"=dword:00000000
"Chat Name"="NHL07"
"LastMatchupIP"=""
"LastCommissionerIP"=""
"GFX Mode"=dword:00000003
[HKEY_CURRENT_USER\Software\EA SPORTS\NHL07\Details Settings]
"Offplay Arena"=dword:000000fa
"Offplay Player"=dword:000000fa
"Onplay Arena"=dword:000000fa
"Onplay Player"=dword:000000fa
3 June 2007
Nach 20 Tagen mit Windows Vista
Ich will gleich zu Beginn vorgreifen. Windows Vista ist ein Spielzeug. Aero, der neue Desktop Manager, ist verspielt und bunt. Leider benötigt gerade dieser auch eine Menge an Ressourcen und daher gehört Warten, mit meiner aktuellen Konfiguration, zu den üblichen Momenten.
Der grösste Frust bei Vista ist nicht das OS selbst, sondern die Treiberhersteller. Bspw. hat es Sony Ericsson bisher noch nicht geschafft ihre PC Suite fürs Synchronisieren eines Handys mit z.B. Outlook auf Vista anzuheben. Ein entsprechender Release wird auf Ende zweites Quartal 2007 angekündigt. Ich bleibe gespannt.
Der grösste Frust bei Vista ist nicht das OS selbst, sondern die Treiberhersteller. Bspw. hat es Sony Ericsson bisher noch nicht geschafft ihre PC Suite fürs Synchronisieren eines Handys mit z.B. Outlook auf Vista anzuheben. Ein entsprechender Release wird auf Ende zweites Quartal 2007 angekündigt. Ich bleibe gespannt.
25 May 2007
18 May 2007
Spring One 2007 in Antwerpen

Vom 20. bis 22. Juni findet die Spring One Konferenz in Antwerpen (Belgien) statt. Zu den Key Speakers gehören u.a.
- Rod Johnson, 'Vater' von Spring
- Jürgen Höller, Spring-Chef-Entwickler
- Eric Evans, Autor des Buchs "Domain-Driven Design"
- Adrian Colyer, CTO von Interface21
- Mark Pollack, Chef-Entwickler von Spring.NET
- Ramivas Laddad, Autor von "AspectJ in Action"
Labels:
Spring
28 June 2006
JUnit und Ant
JUnit Ant Task und seine Tücken
Eigentlich, so könnte man meinen, ist das Ausführen des JUnit Task in Ant ein Kinderspiel. Weit gefehlt. Habe ich mich doch mehr als 3 Stunden mit diesem "Kinderspiel" herumgeärgert; Newsgroups durchforstet und "gegoogelt" bis die Finger wund wurden, um dann festzustellen, dass der JUnit Task im Unterelement <classpath> einfach nochmals die Pfadangabe zu den Testklassen haben möchte. Ob schon diese mit einer mittels einer <path refid="..."> bereits schon bekannt gegeben wurden.
Also nicht vergessen, im Subelement <classpath> jeweils immer folgendes Element platzieren <path location="${class.root}"></path>
Eigentlich, so könnte man meinen, ist das Ausführen des JUnit Task in Ant ein Kinderspiel. Weit gefehlt. Habe ich mich doch mehr als 3 Stunden mit diesem "Kinderspiel" herumgeärgert; Newsgroups durchforstet und "gegoogelt" bis die Finger wund wurden, um dann festzustellen, dass der JUnit Task im Unterelement <classpath> einfach nochmals die Pfadangabe zu den Testklassen haben möchte. Ob schon diese mit einer mittels einer <path refid="..."> bereits schon bekannt gegeben wurden.
Also nicht vergessen, im Subelement <classpath> jeweils immer folgendes Element platzieren <path location="${class.root}"></path>
13 December 2005
VB6 Unit Testing: Wir brauchen doch keine Datenbank
Mit besten Dank an Sebastian von Däniken
Weg mit der Datenbank!
Wer clever Unit Tests schreibt, testet nicht gegen eine richtige Datenbank, sondern versucht diese zu simulieren. Test gegen externe Systeme wie Datenbanken, Netzwerke, etc. sollten generell vermieden werden, da man den Ausgang der Test nicht von deren Verfügbarkeit abhängig machen will.
Datenbankabfrage als XML Datei speichern
In MS ActiveX Data Objects (ADO) lasst sich mit der Klasse ADODB.Recordset eine Abfrage in eine Textdatei (XML oder Microsoft Advanced Data TableGram). Das nachfolgende Beispiel verwendet die XML Variante als Speichermedium. Bei grossem Datenumfang ist die MS ADTG Variante schneller sein, da es sich um ein binäres Format handelt.
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
conn.Open "DSN=myDNS;", "meinUser", "MeinPasswort"
Set rs = conn.Execute("SELECT * FROM Kunde WHERE Vorname = 'Silvio';")
rs.Save "c:\myADO.xml", adPersistXML
conn.Close
Set rs = Nothing
Set conn = Nothing
Weg mit der Datenbank!
Wer clever Unit Tests schreibt, testet nicht gegen eine richtige Datenbank, sondern versucht diese zu simulieren. Test gegen externe Systeme wie Datenbanken, Netzwerke, etc. sollten generell vermieden werden, da man den Ausgang der Test nicht von deren Verfügbarkeit abhängig machen will.
Datenbankabfrage als XML Datei speichern
In MS ActiveX Data Objects (ADO) lasst sich mit der Klasse ADODB.Recordset eine Abfrage in eine Textdatei (XML oder Microsoft Advanced Data TableGram). Das nachfolgende Beispiel verwendet die XML Variante als Speichermedium. Bei grossem Datenumfang ist die MS ADTG Variante schneller sein, da es sich um ein binäres Format handelt.
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
conn.Open "DSN=myDNS;", "meinUser", "MeinPasswort"
Set rs = conn.Execute("SELECT * FROM Kunde WHERE Vorname = 'Silvio';")
rs.Save "c:\myADO.xml", adPersistXML
conn.Close
Set rs = Nothing
Set conn = Nothing
12 September 2005
7 September 2005
Zeichenketten mit Oracle verknüpfen
Um mit SQL (unter Oracle) Zeichenketten zu verknüpfen benötigt man den Operator || (2 Pipes). Das Ganze kann bspw. folgendermassen ausschauen.
SELECT FILENAME || '.txt' FROM SCHEMANAME.TABLENAME;
----------------
FILENAME
----------------
Readme.txt
HOWTO.doc.txt
----------------
2 rows returned
SELECT FILENAME || '.txt' FROM SCHEMANAME.TABLENAME;
----------------
FILENAME
----------------
Readme.txt
HOWTO.doc.txt
----------------
2 rows returned
17 June 2005
Listview und Visual Basic 6
Controls unter Visual Basic 6 - speziell das Listview Control - sind nun wirklich sehr primitiv was die Zugriffsmethoden angeht. Es ist bspw. nicht möglich einen Full Row Select (beim Mausklick ganze Zeile markieren) standardmässig via die Control Properties einzustellen.
Glücklicherweise lässt sich dies via der Win API "nachrüsten", so dass die Listview doch noch anständig daher kommt. Das nachfolgende Listing zeigt wie es geht.
Glücklicherweise lässt sich dies via der Win API "nachrüsten", so dass die Listview doch noch anständig daher kommt. Das nachfolgende Listing zeigt wie es geht.
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal Msg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Private Const LVM_FIRST = &H1000
Private Const LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54)
Private Const LVM_GETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 55)
Public Const LVS_EX_FULLROWSELECT = &H20
Private Sub Check1_Click()
Dim state As Long
state = Check1.Value = 1
Call SendMessage(ListView1.hwnd, _
LVM_SETEXTENDEDLISTVIEWSTYLE, _
LVS_EX_FULLROWSELECT, ByVal state)
End Sub
23 May 2005
Baumstrukturen mit Oracle abbilden
Quelle: Lorenz Graf, COR Infexpert AG
Die nachfolgende SELECT Abfrage ermittelt alle Children IDs unterhalb einer NODE_ID und ordnet diese absteigend nach Strukturlevel.
Ausgangslage
In der Tabelle EXAMPLETREE wird ein Baum abgebildet. Via der NODE_ID lässt sich die PARENT_ID oder mittels dieser wiederum die Childnodes des Parents ermitteln.CREATE TABLE EXAMPLETREE
(
NODE_ID NUMBER(10) NOT NULL,
PARENT_ID NUMBER(10) NOT NULL
);
Die nachfolgende SELECT Abfrage ermittelt alle Children IDs unterhalb einer NODE_ID und ordnet diese absteigend nach Strukturlevel.
SELECT NODE_ID,LEVEL
FROM FIN_P430_CORP_NODE_CHILDREN
START WITH PARENT_ID = 6000
CONNECT BY PRIOR NODE_ID = PARENT_ID
ORDER BY LEVEL DESC;
13 May 2005
Subscribe to:
Posts (Atom)