28 aprile 2006

View e order by

In un libro su Oracle che sto leggendo ora ho trovato varie versioni della questione se sia possibile creare una view con una query contenente la clausola "ORDER BY".
Nel libro (di cui vi dirò in futuro) ho trovato prima una versione che permetteva questa sintassi:

create or replace view myview as
(select * from emp)
order by ename;


Alla fine diceva che era possibile anche omettere le parentesi:

create or replace view myview as
select * from emp
order by ename;


A quanto pare nel passato ciò era impossibile, a quanto risulta da questa risposta di Tom Kyte su un newsgroup, ma oggi lo è.
Tom Kyte, nel post citato, spiega anche chiaramente perché l'ordinamento nelle view è fondamentalmente inutile; infatti nella teoria relazionale non se ne fa menzione, e tutte le relazioni vengono trattate come insiemi, in cui l'ordinamento non è rilevante, ma riguarda solo una rappresentazione dei dati.

1 commento:

Anonimo ha detto...

Approvo motlissimo le conclusioni ottenute, in effetti una view non è che un sottoinsieme, ora se l'insieme è ordinato non è riconducibile ad una tabella ma al più ad una query, la stessa cosa vale per il sottoinsieme. In parole povere che senso ha ordinare una view quando la si può interrogare ordinando il risultato?
PS deploro in modo estremo il post di vz3tk38qepn, vada a postare le sue @!@*##!# altrove!!
Stefano