Tipps & Tricks: Dezember 2008 Bereich: SQL Erstellung: 12/2008 MA Versionsinfo: 10.1, 10.2, 11.1, 11.2 Letzte Überarbeitung: 06/2009 MA Spool-file als HTML-Datei ausgeben In diesem Monatstipp befassen wir uns mit der Erstellung eines Spool-file als HTML Dokument. Mit dem SQL*Plus Befehl Set Markup HTML ON [SPOOL ON] lässt sich leicht ein Report bzw. ein ganzes Spool-file als HTML-Datei ausgeben. Dies ist nützlich, falls Sie beispielsweise einen Report in eine Webanwendung einbauen möchten. Am besten schreiben Sie sich ein Skript, in welchem alle für Sie wichtigen Abfragen vorkommen. Auf jeden Fall sollte am Anfang des Skripts der Befehl spool <Pfad\Dateiname> vorkommen. Dieser bewirkt die Aufzeichnung Ihrer Abfragen (zum Beispiel: spool c:\TEMP\test.html). Anschließend müssen Sie noch die HTML-Ausgabe einschalten. Das erreichen Sie durch den Markup-Befehl: Set Markup HTML [ON/OFF] (Gibt die Markup-Sprache an) SPOOL [ON/OFF] (Gibt an, ob diese auch für das Spool-file gilt) Geben Sie nun mit dem Befehl prompt das Grundgerüst Ihrer HTML-Datei an. Das kann zum Beispiel so aussehen: prompt <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><html><head><title> Spool-file als HTML</title></head> Wenn sich ein SQL-Befehl wie in diesem Beispiel über mehrere Zeilen erstreckt, müssen Sie das durch ein "-" am Ende einer jeden Zeile signalisieren. Wenn Sie nun einen einfachen SELECT-Befehl absetzen und anschließend das Spool-file mit spool off abschließen, wird dieser als HTML-Tabelle abgespeichert. Das bisherige Skript sieht beispielsweise so aus: spool c:\temp\test.html set markup HTML ON prompt <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><html><head><title>SQL*Plus Ausgabe der EMP-Tabelle</title></head> select * from emp; select * from dept; select * from salgrade; spool off set markup HTML OFF Zu sehen ist nun eine einfache Tabelle ohne spezielle Formatierung: Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 1 von 5 Um das Ganze jetzt noch ein wenig aufzupeppen können wir noch Stylesheets einfügen. Platzieren Sie dazu einfach in dem ersten prompt-Befehl zwischen </title> und </head>-Tag einen weiteren Zusatz: <style type="text/css"><!-- a:link{color:#99CCFF;} a:visited{color:#6666FF;} .ora_tab{font-family:Arial; border-width:4px; border-color:#6666FF;border-style:groove; width:auto; }caption.ora_tab {text-align:left;font-size:20pt;font-family:Arial, Verdana, sans-serif;background-color: #dddddd;margin: 0px 0px 0px 0px;padding: 2px 10px 2px 10px;}td { border: 1px solid #d9d9d9; }th { border-color:#66CC66; background-color:#99CCFF;}--></style> Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 2 von 5 In diesem CSS-Zusatz können Sie alle möglichen Formatierungsangaben machen. Die genaue HTML-Syntax zu erläutern würde den Rahmen des Monatstipps hier sprengen. (Der CSS-Einschub ist außerdem nicht zwingend erforderlich). Um die Angaben für alle weiteren Tabellen zu übernehmen müssen Sie in dem set markup-Befehl eine Kleinigkeit erweitern. Der Befehl lautet dann wie folgt: set markup HTML ON TABLE class="ora_tab" Bisher sieht das Ganze dann so aus: Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 3 von 5 Als besonderes "Schmankerl" können Sie sich noch eine Übersichtsliste einfügen mit entsprechenden Links zu verschiedenen Tabellen. Angenommen Sie haben eine HTML-Datei mit etwa 20 Tabellen vor sich, da wäre ein kleines Inhaltsverzeichnis mit eingebauten Links doch ziemlich praktisch... Realisieren können Sie das, indem Sie zunächst in dem prompt-Befehl eine Liste mit Links einbauen. Der Tag dazu lautet <ul></ul>. Dieser erzeugt eine neue Liste, diese hat allerdings noch keine Einträge. Neue Einträge erstellen Sie mit dem Tag <li></li>. Eine Liste sieht dann beispielsweise so aus: <ul> <li>1ster Eintrag</li> <li>2ter Eintrag</li> <li>3ter Eintrag</li> </ul> In unserem Fall müssen wir nach jeder Zeile noch ein "-" einfügen, da SQL*Plus die Eingabe nicht als ganzen Befehl wahrnimmt. Jetzt benötigt man nur noch die Syntax für den Hyperlink. Dieser lautet: <a name="Linkname">Linktext</a> (Legt einen Link fest) <a href="#Linkname">Linktext</a> (verweist auf den Link mit Namen "Linkname") Um einer Tabelle einen Link zuweisen zu können, müssen Sie erst noch einen Tabellentitel erstellen, auf diesen kann dann verwiesen werden. Geben Sie einfach vor einem SELECT-Statement ttitle 'Titeltext mit entsprechendem Link' ein und über der Tabelle erscheint eine Überschrift, auf welche man sich dann im Inhaltsverzeichnis beziehen kann. Jetzt sieht das SQL-Skript so aus: Tabelle EMP Tabelle DEPT Tabelle SALGRADE Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 4 von 5 Muniqsoft GmbH Schulungszentrum, Grünwalder Weg 13a, 82008 Unterhaching, Tel. 089 / 679090-40 IT-Consulting & Support, Witneystraße 1, 82008 Unterhaching, Tel. 089 / 6228 6789-0 Seite 5 von 5