Order by dinâmico Oracle

Olá a todos!

Gostaria de saber se alguém sabe se é possível fazer um order by dinâmico, passando uma função que retorna um número:
Mais ou menos assim:

   Select a.area, a.nome
   from artigo a
   where a.cod = 12
   group by area
   order by funcao(cod);

onde funcao(cod) retorna um código de uma cidade.

pode sim, se quiser pode colocar um select no order by tbm.

t+

Na empresa que trabalho algumas vezes temos esse tipo de situação, faz muito tempo que não faço isso mas pelo que eu me lembre é algo mais ou menos assim:

SELECT campo01, campo02, campo03,

    DECODE(:ORDEM, 1, campo01 , 2, campo02 , 3, campo03 ) ORDENACAO

FROM tabela
ORDER BY ORDENACAO

Se o parâmetro informado é 1 a ordenção é pelo campo01, se informado 2 a ordenação é pelo campo02 e assim vai.
Apenas uma observação, lá trabalhamos com Delphi e não Java onde a tratativa de parâmetros para sql é bastante diferente.

Espero ter ajudado.

É…na verdade, eu montei uma função mesmo.

O problema é que ela nao funciona quando o select tem um union…