sqlplus

Werbung
1
SQL*Plus
1.1
Allgemeines
SQL*Plus ist die interaktive SQL Schnittstelle des Oracle-Systems. Die typische Verwendung von SQL*Plus ist es, ad hoc-Anfragen einzugeben und
sich das Ergebnis direkt auf dem Bildschirm anzuschauen. Dafür sind folgende Merkmale von SQL*Plus interessant:
• Es gibt einen eingebauten Zeileneditor für die Korrektur fehlerhafter SQL-Anfragen. Alternativ kann man ein beliebiges Programm als
Editor aufrufen, insbesondere auch den emacs.
• Die Ausgabe kann auf verschiedene Arten formatiert werden. (Für
kompliziertere Formatierungen ist der SQL*ReportWriter gedacht).
• SQL*Plus verfügt über einen eingebauten Hilfemechanismus.
• Es ist möglich, ein Protokoll der SQL*Plus-Sitzung führen zu lassen,
das dann in eine Datei oder auf den Drucker ausgegeben wird.
Es ist aber auch möglich, wiederkehrende SQL-Anweisungen in eine Datei
abzuspeichern, und diese Datei dann mehrfach auszuführen. Dies ist in
etwa mit den Batch-Dateien in MS-DOS oder den Shell-Skripten unter UNIX
vergleichbar.
• Da man nur selten exakt dieselbe Kommandofolge mehrfach ausführen will, sind solche Programmdateien parametrisierbar. Dazu bietet
SQL*Plus Parameter, deren Wert gesetzt und abgefragt werden kann.
• Natürlich sind auch einfache Ein- und Ausgaben möglich (Falls man
dagegen interaktive Bildschirmmasken oder ähnliches wünscht, muß
man SQL*Forms benutzen.).
• Auch an Kommentare wurde gedacht.
• Sprünge (Bedingungen und Schleifen) sind in der Spracherweiterung
PL/SQL vorgesehen (siehe Kapitel 4).
1
1.2
Minimal-Anleitung
SQL*Plus wird unter UNIX mit dem Kommando sqlplus aufgerufen. Es
sind dann Benutzername und Passwort (für die Datenbank) einzugeben.
Dann müßte nach der Ausgabe einiger Oracle-Versionsnummern “SQL>”
als Prompt erscheinen.
SQL-Kommandos können sich bei SQL*Plus über mehrere Zeilen erstrecken,
das Ende der Eingabe muß daher durch ein Semikolon “;” gekennzeichnet werden (Fortsetzungszeilen werden durch einen Prompt der Form “2”,
“3” u.s.w. angezeigt). Auf die Groß- und Kleinschreibung kommt es nicht
an (außer in String-Konstanten). Eine laufende Datenbank-Anfrage kann
mit “bC” abgebrochen werden (SQL*Plus wird dadurch nicht beendet). Allerdings werden anstehende Ausgaben noch ausgeführt, bevor die Unterbrechung wirksam wird.
Außer den im vorherigen Abschnitt beschriebenen SQL-Kommandos gibt
es noch spezielle SQL*Plus Kommandos. Diese enden am Zeilenende (müssen also nicht mit “;” abgeschlossen werden), es sei denn, die Zeile endet
mit einem Bindestrich “-”.
SQL*Plus kann durch Eingabe von exit oder quit beendet werden.
1.3
Systemeinstellungen
Es gibt viele Möglichkeiten, SQL*Plus seinen eigenen Wünschen anzupassen. Dazu gibt es die Systemvariablen, deren Werte mit set hSystemvariablei
hWerti gesetzt werden, und mit show hSystemvariablei angezeigt werden
(show all zeigt alle Variablen an). Eine kleine Auswahl:
• Mit set pagesize hZeileni kann man die Anzahl der Zeilen einer Seite
setzen, mit set linesize die Länge einer Ausgabezeile.
• Mit set echo on wird nicht nur das Ergebnis, sondern auch die Anfrage ausgegeben; dies kann insbesondere bei Kommandodateien sinnvoll sein.
• Mit set pause on und set pause hTexti erreicht man, dass nach jeder vollen Ausgabeseite der hTexti ausgegeben und auf einen Tastendruck gewartet wird.
2
• set timing on bewirkt, dass am Ende jedes SQL-Kommandos die für
die Bearbeitung verwendete Zeit in Millisekunden angezeigt wird.
• set wrap off bewirkt, dass eine Zeile am Ende abgeschnitten statt
umgebrochen wird.
Befehle, die bei jedem Start von sqlplus automatisch ausgeführt werden
sollen, müssen im Arbeitsverzeichnis in der Datei login.sql abgespeichert werden.
1.4
Kommandodateien
Ist abzusehen, dass man SQL- oder SQL*Plus-Anweisungen mehrmals ausführen möchte, empfiehlt es sich, diese in einer Datei hDateinamei.sql
abzuspeichern. Diese Anweisungen werden mit start hDateinamei oder
kurz @hDateinamei ausgeführt. Eventuelle Parameter werden dahinter
angegeben: start hDateinamei hArgumenti . . . . Auf diese Argumente kann
mit “&1” u.s.w. zugegriffen werden.
Kommentare werden durch rem oder remark eingeleitet und erstrecken
sich bis zum Zeilenende.
Mit prompt hTexti kann ein Text auf den Bildschirm ausgegeben werden.
Eingaben werden mit accept hVariablei hTypi prompt hTexti hEchoi angefordert. Dabei ist hTypi number oder char (oder gar nichts), hTexti wird
als Eingabeaufforderung ausgegeben, und hEchoi ist mit hide anzugeben
setzen, wenn man ein Passwort oder ähnliches eingeben will und die Eingabe dabei nicht angezeigt werden soll.
1.5
SQL*Plus-Hilfesystem und verschiedene nützliche Kommandos
• Mit alter user <Benutzername> identified by <Neues Passwort>;
können Sie Ihr Oracle-Passwort ändern.
• Die eingebaute Hilfe von SQL*Plus kann mit “help hKommandoi” abgerufen werden. Bei help commands wird eine Liste aller Kommandos ausgegeben, help help gibt eine Übersicht über die verfügbaren
3
Hilfestellungen. Schließlich listet help examples eine Liste von Beispielen auf, die man sich anschauen kann.
• Mit “host hKommandoi” wird der UNIX Befehl hKommandoi ausgeführt. Z.B. kann man sich mit “host ls -l ∗.sql” etwa alle SQL-Dateien
im aktuellen Verzeichnis anzeigen lassen. Eine detaillierte Beschreibung der Oracle-Fehler liefert das UNIX-Kommando oerr (für OracleError). Es wird mit einer 3-stelligen Zeichenkette und der Fehlernummer aufgerufen, z.B. host oerr ORA 01001.
• Die Beschreibung der Spalten (Attribute) einer Tabelle kann man sich
mit “desc[ribe] hTabellei” ausgeben lassen.
• Die Ausgaben von SQL*Plus kann man mit “spool hDateinamei” in
die Datei hDateinamei.lst schreiben lassen, mit spool off beendet
man dieses Protokoll.
• Mit copy kann man ganze Tabellen kopieren, z.B. würde
copy from scott/tiger create EMPL using select ∗ from EMP;
die Tabelle EMP des Benutzers “scott” mit Passwort “tiger” in die
gleichzeitig neu angelegte Tabelle EMPL (des aktuellen Benutzers) kopieren.
1.6
Ändern der letzten Eingabe
Falls man sich vertippt hat, kann man den in SQL*Plus eingebauten Zeileneditor benutzen, da die letzte SQL-Anweisung in einem Puffer zwischengespeichert wird:
• “l” (list) zeigt den aktuellen Pufferinhalt an (und setzt die aktuelle
Zeile, welche durch “*” markiert ist, auf die letzte Pufferzeile).
• “l hZeilennummeri” setzt die aktuelle Pufferzeile, auf die angegebene
Zeile.
• “c/halter Stringi/hneuer Stringi/” (change) ersetzt das erste Vorkommen von halter Stringi durch hneuer Stringi (in der aktuellen Pufferzeile).
• “a hTexti” (append) hängt hTexti an die aktuelle Zeile an.
4
• “i” (input) fügt mehrere Zeilen Text nach der aktuellen Zeile in den
Puffer ein, der Pufferinhalt wird nach Eingabe eines Semikolons ausgeführt.
• “del” (delete) löscht die aktuelle Pufferzeile.
• “r” (run) führt den aktuellen Pufferinhalt aus.
• “/” führt auch den aktuellen Pufferinhalt aus (zeigt ihn aber vorher
nicht an).
• “get hDateinamei” liest den Inhalt der Datei hDateinamei in den Puffer.
• “save hDateinamei” schreibt den Inhalt des Puffers in die Datei namens hDateinamei.
Mit edit kann man einen richtigen Editor aufrufen, dem der Pufferinhalt in
der Datei afiedt.buf übergeben wird. Nach Abschluß der Editor-Sitzung
kann man das Ergebnis mit “r” ausführen. Der verwendete Editor kann
mit “define _editor = hProgrammi” ausgewählt werden, insbesondere kann
man also auch den emacs, jove oder vi verwenden.
1.7
Formatierung der Ausgabe
SQL*Plus erlaubt verschiedene einfache Formatierungen von Anfrageergebnissen. Es ist aber zu beachten, dass diese Setzungen nicht im System
abgespeichert werden, also beim Verlassen von SQL*Plus verloren gehen,
es sei denn, sie werden in der Datei login.sql abgespeichert.
Der Befehl column hSpaltennamei hOption1i hOption2i . . . bezieht sich auf
die Formatierung von Spalten, wobei hSpaltennamei auch ein beliebiger
Ausdruck der select-Liste sein kann). Die wichtigsten Optionen sind:
• format Ahni bewirkt, dass die (string-wertige) Spalte in Zukunft mit
der Breite hni ausgegeben wird. Für zahl-wertige Spalten gibt es noch
viele Formate, z.B. würde “format 99,999.99” fünf Stellen vor dem
Dezimalpunkt und zwei danach anzeigen, und, falls mehr als drei
Stellen vor dem Dezimalpunkt stehen, diese durch ein Komma abtrennen.
5
• Falls der Spalteninhalt zu lang für die mit format gewählte Darstellung ist, kann man noch zwischen wrapped (in der nächsten Zeile
fortsetzen), word_wrapped (in der nächsten Zeile fortsetzen, aber
nur bei Leerzeichen trennen) und trunc (Rest unterdrücken) wählen.
• Mit heading hTexti kann man die Spaltenüberschrift wählen, sie kann
sich auch über mehrere Zeilen erstrecken, die man mit “|” trennt.
• Der Text, der in dieser Spalte für einen Nullwert ausgegeben wird,
läßt sich mit null htexti festlegen.
• Mit column hSpaltennamei clear läßt sich die Spaltendefinition wieder löschen.
1.8
Benutzervariablen
SQL*Plus verwaltet Benutzervariablen, die mit define hVariablei = hWerti
gesetzt werden können. Das Kommando define (ohne Argumente) zeigt
alle Variablen an.
In SQL-Anweisungen wird dann jeweils “&hVariablei” bzw. “&&hVariablei”
durch den Wert dieser Variable ersetzt. Falls die Variable noch nicht definiert ist, wird der Wert interaktiv abgefragt (bei “&hVariablei” immer wieder, bei “&&hVariablei” nur einmal, d.h. es findet eine implizite Zuweisung
an diese Variable statt). Ein “&” kann man eingeben, indem man ein “\”
voranstellt, (siehe show escape), vorher muß man aber set escape on eingeben. Falls nach dem Variablennamen kein Leerzeichen folgt, kann man
den Variablennamen auch mit “.” beenden (siehe show concat).
6
Herunterladen