Oracle-Sortierung

Hallo zusammen,

ich habe eine Oracle 9i Datenbank und möchte, wenn eine select-Abrage gestellt wird, dass die Datensätze nach einem Attribut geordnet angezeigt werden.

Problem: der select-Befehl wird durch ein für mich nicht zugängliches Programm abgesetzt, der nicht die Funktion order by implementiert hat.

Hatte an Trigger gedacht, geht ja aber nur mit delete, update oder insert. Gibt es eine Möglichkeit dafür eine Function /Procedur zu schreiben, also wenn select aufgerufen wird, dass dann der select order by Befehl ausgeführt wird??

Hat jemand von euch eine Idee dazu??

Hi,

eine Idee wäre vielleicht, dass du einen PK-Index auf das / die Attribut(e) legst. Danach werden die Daten ja bereits sortiert in der Tabelle abgelegt und sie kommen dann quasi „automatisch“ sortiert raus.
Ist nur ein Denkansatz.

Gruß,
Kai

Hallo Kai!

eine Idee wäre vielleicht, dass du einen PK-Index auf das /
die Attribut(e) legst. Danach werden die Daten ja bereits
sortiert in der Tabelle abgelegt und sie kommen dann quasi
„automatisch“ sortiert raus.

Das ist völlig falsch! Die Organisation des Indices ist von der Organisation der Tabelle (ausser by Index-Organized-Tables) völlig unabhängig. Die Reihenfolge der Datensätze bleicbt also auch nach der Anlage eines Keys gleich (alles andere wäre auch eher weniger sinnvoll, wenn man sich das genau überlegt…).

Ist nur ein Denkansatz.

Leider ein falscher. Man kann das aber natürlich schon machen:

  1. Benenne deine Tabelle um (also z.B. my_table --> my_table_t)
  2. Erstelle einen View "CREATE VIEW my_table AS SELECT * FROM my_table_t ORDER BY …;

Die Applikation verwendet jetzt automatisch den View und bekommt die Datensätze in der richtigen Sortierung.

Gruß,
Martin

Gruß,
Kai