Oracle PL/SQL Grundkurs

System- und Substitutionsvariablen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Dieses Video erklärt den Unterschied zwischen System- und Substitutionsvariablen. Systemvariablen nutzt man, um die Funktionsweise von SQL*plus zu steuern. Substitutionsvariablen werden von SQL*plus zur Laufzeit durch vordefinierte Zeichenketten ersetzt.

Transkript

In diesem Video werden wir uns zwei unterschiedliche Variablentypen anschauen, die man benötigt, um die Funktionsweise von SQL plus zu steuern. Die Rede ist von Systemvariablen und Substitutionsvariablen. Damit sie diese zwei Arten von Variablen sauber voneinander unterscheiden können, werde ich im aktuellen Video die Unterschiede verdeutlichen. Dabei werde ich ihnen auch zeigen, wie sie über eine spezielle Initialisierungsdatei, die sich "login.sql" nennt, dafür sorgen, dass ihre individuellen Einstellungen nach ihrer Sitzung nicht verloren gehen. Ich starte also nun SQL plus indem ich die Eingabeaufforderung hole und dann hinter dem "prompt" "sqlplus" schreibe, und dann melde ich mich bei der Oracle Database an, aber diesmal nicht mit dem Windows-Benutzer, sondern mit dem Benutzer "sys/sys as sys.dba". Wir beginnen zunächst mit den Systemvariablen. Die Aufgabe der Systemvariablen ist vorwiegend die Funktionsweise von SQL plus zu steuern und dies ist häufig auch sehr wichtig. Beispielsweise ist es doch sehr unschön, dass uns SQL plus standardmäßig nicht zu erkennen gibt, unter welchem Benutzer und vor allem mit welchen Rechten wir angemeldet sind, denn stattdessen wird uns hier einfach nur SQL als Wort dann angezeigt. Aber hier lässt sich mit Hilfe von Systemvariablen Abhilfe schaffen. Ein weiterer Begriff für die Systemvariable lautet Set-Variable, weil man die Systemvariable über das "set-Kommando abändert. Die Set-Variable, mit der wir den prompt abändern können, nennt sich SQL-prompt. Wir könnten also schreiben "set sqlprompt" und dann etwas dahinter setzen, und das würde dann schon funktionieren. Wir können uns anschauen, was Aktuell in SQL-prompt enthalten ist, über das Schlüsselwort "show SQL-prompt" und dann sehen Sie, dass dort dann eben dieser Inhalt steht. Wir können uns auch den Inhalt aller Set-Variablen anschauen, das geht so: "show all". Und jetzt haben wir ja vor, dass wir diesen "prompt" abändern. Über die Set-Variable SQL-prompt können wir in aller Ruhe den "prompt" anpassen. Ich werde meinen "prompt" mal entsprechend abändern und zwar soll mir der "prompt" anzeigen, unter welchem Benutzer ich aktuell angemeldet bin. Jetzt kann ich beispielsweise folgendes schreiben: "set sqlprompt" und dann setze ich ein Hochkomma ein und schreibe mal den Datenbankbenutzer "sys" rein, ein -Zeichen zur Aufforderung einer Eingabe für den Windows-Benutzer und dann ein Hochkomma. So, dann sehen wir das, was dort richtig gemacht wird. Allerdings ist mein neuer "prompt" nicht besonders hilfreich, denn wenn ich mich nun mit einem anderen Benutzer an die Oracle Database anmelde, wird mir der "prompt immer noch den Benutzer "sys" anzeigen. Ich könnte jetzt also sagen, "connect system/sys" Jetzt bin ich als "system" angemeldet, aber hier wird immer noch "sys" angezeigt, das ist natürlich falsch. Wie kann ich also binärisch dafür sorgen, das der aktuelle angemeldete Benutzer in "prompt" zu sehen ist. An dieser Stelle ist es sehr nützlich, das SQL plus Substitutionsvariablen zur Verfügung stellt. Dabei handelt es sich um Variablen, deren Vorkommnis SQL plus zur Laufzeit durch vordefinierte Zeichenketten automatisch ersetzt. Substitutionsvariablen werden über das Schlüsselwort "define" festgelegt. Ich kann also Folgendes ausdrücken: "define", dann füge ich eine Substitutionsvariable, nämlich "Gruß ist gleich Hallo Welt" ein. So, und das würde auch funktionieren. Ich kann jetzt alle Subventionsvariablen anzeigen lassen, indem ich nur "define" in den "prompt" schreibe, und dann sehen Sie, dass "define Gruß" richtig und korrekt gesetzt worden ist. Und hier sehen Sie auch noch eine Reihe von anderen Substitutionsvariablen, die der Hersteller Oracle für uns vordefiniert hat. Wie sie sehen, setzt Oracle vor seine eigenen Substitutionsvariablen immer hier so einen Unterstrich. Hier "_user", die jetzt das aktuelle Datenbankbenutzer System enthält. Um diese Substitutionsvariable "_user" zu verwenden, übernehmen wir dessen Namen in unsere Set-Anweisung. Ich kann jetzt also schreiben, "set sqlprompt" Hochkomma. Und dann werde ich folgendes machen, ich werde den Namen "_user" verwenden, aber davor setze ich ein kaufmännisches "&". Dann setze ich einen "_user" hin, und dann ein "@"-Zeichen und wo ich mich angemeldet habe, steht hier im "Connect identifier. Also schreibe ich jetzt dort rein: "&_connect identifier". Im Übrigen, nur dass sie sich nicht wundern, ich hätte hier auf das kaufmännische & auch verzichten können, allerdings setzt man es, weil das „&“ eine besondere Bedeutung hat. bei Substitutionsvariablen Auf die Bedeutung gehen wir aber erst in einem späteren Video ein. Ich werde jetzt hier noch zusätzlich die Substitutionsvariable "privileg" hinzufügen, denn in diese Variable schreibt SQL plus rein. wenn wir mit besonderen Privilegien, also als Administrator angemeldet sind. Deswegen setze ich die dort hinzu, dann setze ich noch ein ""-Zeichen. Leertaste, und ein Hochkomma und bin dann hiermit fertig. Dann sehen wir, dass angezeigt wird, wer ich momentan bin. "system@xe. Jetzt hoffen wir, dass das irgendwie funktioniert, wenn ich jetzt hingehen würde, sagen würde "connect sys/sys as system dba" würde ich theoretisch hoffen, dass der das dann auch wieder übernimmt. So, dass tut er aber nicht, hier steht immer noch „system“ drin und der Grund dafür ist nämlich folgender: Als wir an dieser Stelle den SQL-prompt abgeändert haben, da haben wir es sozusagen dauerhaft vorgenommen, denn bei jeder Anmeldung, jedes Mal, wenn SQL plus gestartet wird, ist es so, dass dann dieser SQL-prompt, also diese Substitutionsvariable nicht mehr abgeändert wird. Wie können wir aber dafür sorgen, dass stets binärisch immer der aktuelle SQL-prompt dort gesetzt ist. Hierzu verwenden wir eine Datei, die sich „login.sql“ nennt. Und zwar handelt es sich hierbei um eine Initialisierungsdatei, die SQL plus jedes Mal öffnet, wenn SQL plus neu gestartet wird, oder wenn man sich an einer Oracle Database anmeldet. Also schreibe ich „edit login.sql“. Er erzeugt sie dann neu und dann werde ich jetzt als erstes einen mehrzeiligen Kommentar hinzufügen, „meine initialisierende Login-Datei“ und schließe den Kommentar. Und jetzt kann ich an dieser Stelle meinen SQL-prompt setzen, „set sqlpromt '&_user@&_connect identifier" und dann brauchen wir noch das "privilege" und schon sind wir damit fertig. Neben dieser Möglichkeit können sie die Umgebungsvariable auch in das globale Loginskript setzen, dabei handelt es sich um eine Datei, die sich glogin.sql nennt. Die werde ich Ihnen mal zeigen, und zwar öffne ich mal einen Explorer, hier dann in Oracle XE hinein, hier hinunter, dann Product 11.2 Server, dann SQL plus admin und hier sehen Sie diese Datei. Und zwar ist das so, dass hier alles drinsteht, was für alle Benutzer gültig ist. Wenn sie allerdings auf einem externen Host arbeiten, werden sie hierauf kaum Zugriffsrechte haben. Wenn Ihr Oracle-Server also von einem System-Admin verwaltet wird, werden Sie diese Möglichkeit also nicht nutzen können, deswegen ist es auch gut, dass wir als Benutzer eine eigene Login verwenden Ich schließe dass jetzt hier mal und werde ihnen in der login.sql nun noch ein paar weitere Set-Variablen zeigen, die womöglich auch noch hilfreich sein werden. Eine davon nennt sich „echo“. Ich kann das „echo“ abschalten. Was bedeutet das? Und zwar ist es so, dass alle Anweisungen, die ausgeführt werden auf der Kommandozeile, normalerweise angezeigt werden, wenn das Echo „on“ ist. Ich kann das Echo aber auch auf „off“ setzen, dann passiert das nicht. Eine weitere nützliche Set-Variable, die man brauchen kann, nennt sich „heading“. Jedes Mal, wenn ich eine Select-Anweisung, eine SQL-Select-Anweisung ausführe und mir hierdurch der Inhalt einer Datenbanktabelle angezeigt wird, so setzt SQL plus die Namen der Spaltenfelder als Kopfzeile vor jede Datenzeile. Aber über „set heading off“ kann ich eben dafür sorgen, dass dies unterbunden wird. Eine andere Möglichkeit hierzu bietet die Set-Variable „pagesize“. Also ich könnte jetzt auch sagen, ja gut, ich möchte die Headings zwar sehen, aber nicht so häufig, also nicht vor jeder Zeile, sondern eben nur vor jede hundertste, über „pagesize“ kann ich diese ändern. „set pagesize 100“ und dadurch wird sie dann immer vor jede hundertste Zeile die Kopfzeile angezeigt. Sehr nützlich ist auch noch „linesize“. Über „linesize kann ich festlegen, nach wie vielen Zeichen eine neue Zeile begonnen werden soll. Ich setze die mal auf 120. Ich werde dann auch noch dafür sorgen, dass die Set-Variable „server output“ auf „on“ gesetzt ist, damit unsere Ausgaben der Funktion „putline“ auch wirklich auf der Konsole gesehen werden können, ohne dass ich sie jedes Mal auf der Konsole extra eingeben muss. Deshalb setze ich „set server output“ auf „on“. So, dass ganze muss ich jetzt noch speichern. Dann schließe ich die Datei noch, und jetzt ist es so, dass jedes Mal, wenn ich jetzt eine neue Sitzung beginne, SQL plus immer diese login.sql auslösen wird, sodass mir immer auch angezeigt wird, wer und wo ich gerade bin. Wenn ich mich nun erneut mit SQL plus bei der Oracle Database anmelden würde, also „connect“ als „sys“, oh, hier habe ich einen Fehler, hier habe ich mich vertippt. Okay. Dann gehe ich hier noch einmal rein „set pagesize 100“, nochmal abspeichern, mal schauen, jetzt wieder „connect“. Das hat er hier schon richtig gemacht. Ich kann Ihnen das nochmal vorführen, mit „system/sys“ und dann wird mir dort immer das Richtige angezeigt. In diesem Video habe ich Ihnen nun den Unterschied zwischen System- und Substitutionsvariablen erklärt. Dabei habe ich Ihnen auch gezeigt, wie wir unsere „prompt“ mit System- und Substitutionsvariablen so setzen können, dass wir stets darüber informiert werden, mit welchem Benutzer und welchen Rechten wir aktuell angemeldet sind.

Oracle PL/SQL Grundkurs

Entdecken Sie grundlegende Programmstrukuren, Stored Procedures und Functions in PL/SQL und sehen Sie, wie Sie auf Daten zugreifen können.

3 Std. 58 min (32 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!