Posted by Serge Rielau on 03/08/06 15:00
David Portas wrote:
> Views don't return any data. Only the queries issued against a view can
> return data to the client. That means either queries in a stored
> procedure or in a client application. So those queries would still have
> to be the place for your "ORDER BY _ORDER_OF_A_" clause.
Correct. The need for the query was there before. My proposal does not
change that.
> There is a problem. The predefined view order can only work if the
> column(s) referenced by _ORDER_OF_A_ are also referenced in the SELECT
> list of the *query* (not just the view). Otherwise it may not be
> possible to determine the correct order and perform the sort. For this
> reason, standard SQL (and other SQLs too in many cases) will raise an
> error if the ORDER BY columns aren't also included in the SELECT list.
I don't think this is the case in standard SQL (but I don't have the
time to dig through it now. FWIW DB2 does not require the columns to be
specified in the select list.
> The implication is that the person writing the _ORDER_OF_A _ clause in
> the query or proc must A) know which columns determine the order, and
> B) include those columns in the SELECT list. So given those constraints
> why wouldn't he or she just type the column names in the ORDER BY list
> as well?
Without relaxing the limitation you encountering that would be correct
and indeed undesirable. Given that views get expanded into the query
there is no technical reason for the presence of the order by columns in
the view signature (the columns exposed by the view).
I would guess that SQL Server must know the internal concept of
invisible columns (such as row-id) which is used to pull through order
without infesting the exposed select list.
Cheers
Serge
--
Serge Rielau
DB2 Solutions Development
IBM Toronto Lab
Navigation:
[Reply to this message]
|