Notas sobre o Release


|42.12 ORDER BY em Sub-seleções

|DB2 agora suporta ORDER BY em sub-seleções e seleções completas.

|42.12.1 seleção completa

|O que se segue é um diagrama de sintaxe parcial da seleção completa |modificada, exibindo a localização da order-by-clause.

|>>-+-subselect---------+---------------------------------------->
|   +-(fullselect)------+
|   '-| values-clause |-'
| 
|   .----------------------------------------------.
|   V                                              |
|>----+------------------------------------------+-+------------->
|     '-+-UNION---------+--+-sub-seleção-------+-'
|       +-UNION ALL-----+  +-(fullselect)------+
|       +-EXCEPT--------+  '-| values-clause |-'
|       +-EXCEPT ALL----+
|       +-INTERSECT-----+
|       '-INTERSECT ALL-'
| 
|>--+-----------------+-----------------------------------------><
|   '-order-by-clause-'
| 
| 

|Uma seleção completa que contém uma cláusula ORDER BY não pode ser |especificada em: |

|Uma cláusula ORDER BY em uma seleção completa não afeta a ordem das filas |retornadas por uma consulta. Uma cláusula ORDER BY somente afeta a |ordem das filas retornadas se for especificado na seleção completa mais |distante.

|42.12.2 subselect

|Segue o diagrama de sintaxe completo da subseleção modificada, mostrando a |localização da order-by-clause.

|>>-select-clause--from-clause--+--------------+----------------->
|                               '-where-clause-'
| 
|>--+-----------------+--+---------------+----------------------->
|   '-group-by-clause-'  '-having-clause-'
| 
|>--+-----------------+-----------------------------------------><
|   '-order-by-clause-'
| 
| 

|As cláusulas de subselect são processadas na seguinte seqüência: |

  1. |Cláusula FROM
  2. |Cláusula WHERE
  3. |Cláusula GROUP BY
  4. |Cláusula HAVING
  5. |Cláusula SELECT
  6. |Cláusula ORDER BY |

|Uma subselect que contém uma cláusula ORDER BY não pode ser |especificada: |

|Por exemplo, o que se segue não é válido (SQLSTATE 428FJ SQLCODE |-20211):

|SELECT * FROM T1
|   ORDER BY C1
|UNION
|SELECT * FROM T2
|   ORDER BY C1

|O seguinte exemplo é válido:

|(SELECT * FROM T1
|   ORDER BY C1)
|UNION
|(SELECT * FROM T2
|   ORDER BY C1)

|Uma cláusula ORDER BY em uma subselect não afeta a ordem das filas |retornadas por uma consulta. Uma cláusula ORDER BY somente afeta a |ordem das filas retornadas se isso for especificado na seleção completa mais |distante.

|42.12.3 order-by-clause

|O que se segue é um diagrama de sintaxe completa da order-by-clause |modificada.

|             .-,------------------------------.
|             V             .-ASC--.           |
|>>-ORDER BY----+-sort-key--+------+---------+-+----------------><
|               |           '-DESC-'         |
|               '-ORDER OF--table-designator-'
| 
|sort-key
| 
||--+-simple-column-name--+--------------------------------------|
|   +-simple-integer------+
|   '-sort-key-expression-'
| 
| 
|

|ORDER OF table-designator
|Especifica que o mesmo ordenamento utilizado em table-designator |deve ser aplicado à tabela de resultados da subselect. Deve haver uma |referência de tabela idêntica a table-designator na cláusula FROM da |subselect que especifica essa cláusula (SQLSTATE 42703). A subselect |(ou seleção completa) correspondente ao table-designator especificado |deve incluir uma cláusula ORDER BY que é dependente dos dados (SQLSTATE 428FI |SQLCODE -20210). O ordenamento que é aplicado é o mesmo como se as |colunas da cláusula ORDER BY na subselect (ou seleção completa) embutida |fossem incluídas na subselect (ou seleção completa) exterior e essas colunas |fossem especificadas em lugar da cláusula ORDER OF. Para obter mais |informações sobre designadores de tabela, consulte "Qualificadores de Nome de |Coluna para Evitar Ambigüidade" em SQL |Reference.

|Observe que essa forma não é permitida em uma seleção completa (além da |forma degenerativa de uma seleção completa). Por exemplo, o que se |segue não é válido:

|(SELECT C1 FROM T1
|   ORDER BY C1)
|UNION
|SELECT C1 FROM T2
|   ORDER BY ORDER OF T1

|O seguinte exemplo é válido:

|SELECT C1 FROM
|   (SELECT C1 FROM T1
|      UNION
|    SELECT C1 FROM T2
|    ORDER BY C1 ) AS UTABLE
|ORDER BY ORDER OF UTABLE
|

|42.12.4 select-statement

|O que se segue é um diagrama de sintaxe completa da select-statement |modificada:

|>>-+-----------------------------------+--fullselect------------>
|   |       .-,-----------------------. |
|   |       V                         | |
|   '-WITH----common-table-expression-+-'
| 
|>--fetch-first-clause--*--+--------------------+---------------->
|                          +-read-only-clause---+
|                          |               (1)  |
|                          '-update-clause------'
| 
|>--*--+---------------------+--*--+--------------+-------------><
|      '-optimize-for-clause-'     '-WITH--+-RR-+-'
|                                          +-RS-+
|                                          +-CS-+
|                                          '-UR-'
| 
| 

|Notas:

  1. |A update-clause não pode ser especificada se a seleção completa contiver |uma order-by-clause. |

|Instrução SELECT INTO

|Sintaxe

|                        .-,-------------.
|                        V               |
|>>-select-clause--INTO----host-variable-+--from-clause---------->
| 
|>--+--------------+--+-----------------+--+---------------+----->
|   '-where-clause-'  '-group-by-clause-'  '-having-clause-'
| 
|>--+-----------------+--+--------------+-----------------------><
|   '-order-by-clause-'  '-WITH--+-RR-+-'
|                                +-RS-+
|                                +-CS-+
|                                '-UR-'
| 
| 

|42.12.5 Funções OLAP (window-order-clause)

|O que se segue é um diagrama de sintaxe parcial para as funções OLAP |exibindo a window-order-clause modificada.

|window-order-clause
| 
|             .-,-------------------------------------------.
|             V                        .-| opção asc |--.   |
||--ORDER BY----+-sort-key-expression--+----------------+-+-+----|
|               |                      '-| opção desc |-' |
|               '-ORDER OF--table-designator--------------'
| 
|opção asc
| 
|        .-NULLS LAST--.
||--ASC--+-------------+-----------------------------------------|
|        '-NULLS FIRST-'
| 
|opção desc
| 
|         .-NULLS FIRST-.
||--DESC--+-------------+----------------------------------------|
|         '-NULLS LAST--'
| 
| 
|

|ORDER BY (sort-key-expression,...)
|Define o ordenamento de filas dentro de uma partição que determina o valor |da função OLAP ou o significado dos valores ROW na |window-aggregation-group-clause (não define o ordenamento do conjunto de |resultados de consulta).

|sort-key-expression
|Uma expressão utilizada na definição do ordenamento das filas dentro de |uma partição de janela. Cada nome de coluna referido em uma |sort-key-expression deve claramente referir-se a uma coluna do conjunto de |resultado da subselect, incluindo a função OLAP (SQLSTATE 42702 ou |42703). O comprimento de cada sort-key-expression não deve superar 255 |bytes (SQLSTATE 42907). Uma sort-key-expression não pode incluir uma |seleção completa scalar (SQLSTATE 42822) ou qualquer função que não seja |determinista ou que tenha uma ação externa (SQLSTATE 42845). Essa |cláusula é exigida para as funções RANK e DENSE_RANK (SQLSTATE 42601).

|ASC
|Utiliza os valores da sort-key-expression em ordem crescente.

|DESC
|Utiliza os valores da sort-key-expression em ordem decrescente.

|NULLS FIRST
|O ordenamento das janelas considera valores nulos antes de |todos os valores não-nulos na seqüência de ordem.

|NULLS LAST
|O ordenamento das janelas considera valores nulos depois de |todos os valores não-nulos na seqüência de ordem.

|ORDER OF table-designator
|Especifica que o mesmo ordenamento utilizado em table-designator |deve ser aplicado à tabela de resultados da subselect. Deve haver uma |referência de tabela idêntica a table-designator na cláusula FROM da |subselect que especifica essa cláusula (SQLSTATE 42703). A subselect |(ou seleção completa) correspondente ao table-designator especificado |deve incluir uma cláusula ORDER BY que é dependente dos dados (SQLSTATE 428FI |SQLCODE -20210). O ordenamento que é aplicado é o mesmo como se as |colunas da cláusula ORDER BY na subselect (ou seleção completa) embutida |fossem incluídas na subselect (ou seleção completa) exterior e essas colunas |fossem especificadas em lugar da cláusula ORDER OF. Para obter mais |informações sobre designadores de tabela, consulte "Qualificadores de Nome de |Coluna para Evitar Ambigüidade" em SQL |Reference. |


[ Início da Página | Página Anterior | Próxima Página | Índice | Índice Remissivo ]