Letzt lag mal wieder das Oraclemagazin auf dem Tisch. Wer es nicht kennt: Ihr verpasst nicht viel. etwa 30% sind offiziell Werbung, 30% sind inoffizielle Werbung, d.h. Erfolgsstories von Firmen, 15% sind blah, blah (Leserbriefe und Kindheitsgeschichten von Oracle Mitarbeiter).

Die verbleibenden 15% brachten mein Blut zum wallen: Es gibt ein neues Oracle Feature: virtuelle Spalten. An sich ein wirklich nützliches Feature. Eine Spalte in einer Tabelle wird als Funktion definiert. Sie enthält keine eigenen Daten, sondern die Daten werden bei Bedarf berechnet. Im Gegensatz zu Function Based Indizes wird also praktisch kein zusätzlicher Speicher verbraucht. Oracle kann aber dennoch Statistiken sammeln, und so dem Optimizer wichtige Informationen liefern. Also, warum rege ich mich darüber auf? Wegen der Syntax! Quizfrage: Wofür steht AS in SQL? Ãœber AS werden Aliase definiert: Spalten, Tabellen, oder ganze Ausdrücke. Links steht der ursprüngliche Ausdruck, rechts der neue Name dafür. Cool, das ist ja wie geschaffen für virtuelle Spalten! Stimmt. Das hat sich Oracle auch gedacht und einem Praktikanten gesagt: Hei mach mal virtuelle Spalten und benutze AS um den Namen dafür zu definieren. Der konnte bloß noch kein SQL und hat es ordentlich versaut.

Die Syntax für eine virtuelle Spalte sieht so aus:

create table (x number,y as (x+1);

Hallooooo, warum steht der Name des Aliases auf einmal links?

Na, ich sollte mich wohl nicht so aufregen. Oracle demonstriert ja bei allem was bei normalerweise mit API Design zu tun hat Inkompetenz. Man betrachte nur das wunderbar einheitliche Benennung von Funktionen:


Die ganze API ist voll mit solchen Krücken, und mit PLSQL will ich gar nicht erst anfangen. Ich bin wirklich beeindruckt von der Leistungsfähigkeit von Oracle. Hut ab vor allen Programmieren, die am Datenbankkern arbeiten. Aber den Rest ...