Inhaltsverzeichnis

Eigene Oracle-SQL-Doku, die aus den Übungen entstanden ist

Ausgabeformatierungen


Filter, Sortierung & Formatieren

Operatoren, die im SELECT & WHERE verwendet werden

Feld Beispiel Rückgabe
YEAR EXTRACT(YEAR FROM hire_date) 2000
MONTH EXTRACT(MONTH FROM hire_date) 6
DAY EXTRACT(DAY FROM hire_date) 17
HOUR EXTRACT(HOUR FROM SYSTIMESTAMP) 14
MINUTE EXTRACT(MINUTE FROM SYSTIMESTAMP) 30
SECOND EXTRACT(SECOND FROM SYSTIMESTAMP) 45.123
TIMEZONE_HOUR EXTRACT(TIMEZONE_HOUR FROM SYSTIMESTAMP) 2
TIMEZONE_MINUTE EXTRACT(TIMEZONE_MINUTE FROM SYSTIMESTAMP) 0
TIMEZONE_REGION EXTRACT(TIMEZONE_REGION FROM SYSTIMESTAMP) Europe/Berlin
TIMEZONE_ABBR EXTRACT(TIMEZONE_ABBR FROM SYSTIMESTAMP) CET

Wichtig: HOUR, MINUTE, SECOND und die Timezone-Felder funktionieren nur mit TIMESTAMP-Datentypen, nicht mit DATE.


Prompting

Selects mit Prompts an den User werden nicht von der Datenbank selber gepromptet. Vielmehr ist es so, dass hier der SQL-Client zunächst eine Abfrage an den User stellt und dann den eingegebenen Wert durch die zu promptende Variable ersetzt und dann erst den Select an die Datenbank schickt.
Hier ein Beispiel:

SELECT last_name, salary FROM EMPLOYEES WHERE SALARY > &min_sal ;

Beim Ausführen des Selects wird zunächst nach dem Wert von min_sal gefragt bevor der Select an die DB geschickt wird.
ACHTUNG! Diese Schreibweise beherrschen nur Oracle eigene SQL-Clients. Dies wären:

Alle anderen Nicht-Oracle-SQL-Clients beherrschen diese Schreibweise nicht und würden &min_sal als Teil der WHERE Klausel mitschicken und so in einen Fehler laufen.
Allerdings beherrscht DBeaver hier eine eigene Syntax:

SELECT last_name, salary FROM EMPLOYEES WHERE SALARY > :min_sal ;

Mit einem Doppelpunkt ':' wird hier min_sal ebenfalls gepromptet.
ACHTUNG! In einem Oracle-SQL-Client wird hier auch gepromptet, weil hier :min_sal als eine noch nicht definierte Variable erkannt wird.
Wird aber in einem Script die Variable zuvor definiert und gesetzt, dann wird nicht mehr gepromptet.
Beispiel:

VARIABLE min_sal NUMBER;
EXEC :min_sal := 14000;
SELECT last_name, salary FROM EMPLOYEES WHERE SALARY > :min_sal ;

Liefert als Script eine Rückgabe ohne vorherigen Prompt.
:min_sal kann hier auch an verschiedenen Stellen wiederverwendet werden.

Ein Prompt wird auch innerhalb eines Stringoperators ausgelesen und angezeigt:

SELECT last_name FROM employees WHERE LAST_NAME LIKE UPPER('&first_letter%');

Zurück - Weiter