Outra pergunta, só pra garantir....

TODOS os teus casos são com ROWNUM = 1?

Teoricamente o 1 é o único caso que pode funcionar.
Se for rownum = 2 ou então qualquer outro número maior, não vai funcionar
nunca.

Por isso que o normal é usar sempre sinal de < para fazer Top-n.

Esse seu caso que nao retorna nada... é rownum = 1 mesmo?

De qualquer maneira, na minha opinião, o erro aí é realmente de quem
codificou.
O correto é fazer "<2", e não "=1".




2013/4/18 Rafael Bahr Esposito da Rocha <rocha.ora...@gmail.com>

> Boa tarde Milton,
>
> sim, tenho certeza sobre o funcionamento, que fazendo rownum <= funciona.
> No caso que estou enfrentado a versão é 10.2.0.3.
>
> Há uns 6 meses passei pelo mesmo problema em uma versão do 11 e o DBA
> responsável pela base do cliente atualizou um patch ou atualizou versão,
> porém não tenho mais contato com ele e não sei o que ele realmente fez.
> Estou tentando evitar ter que revisar todas consultas da aplicação.
>
> Att.
>
> Rafael Bahr
>
> Em 18/04/2013 17:08, Milton Bastos Henriquis Jr. escreveu:
>
>> Boa tarde Rafael
>>
>> Cara, eu aprendi muito tempo atrás que o correto era fazer sempre ROWNUM <
>> N.
>> Exemplo: se eu queria rownum = 1 (igual teu caso) eu deveria fazer rownum
>> <
>> 2.
>> Como eu aprendi isso mais de 10 anos atrás eu realmente NÃO LEMBRO o
>> motivo.
>>
>> O que sei é que no 10g tinha um BUG (4513695, corrigido na versão
>> 10.2.0.4)
>> que deixava o rownum = 1
>> muito mais lento do que o rownum < 2.
>>
>> Mas no seu caso vc não disse que é lentidão, disse que simplesmente não
>> retorna informação,
>> o que é MUITO estranho.
>> Vc tem certeza absoluta que a mesma query que vc está fazendo retorna
>> informação se colocar
>> o  "=<" ou apenas "<"?
>>
>>
>>
>>
>>
>>
>> 2013/4/18 Rafael Bahr Esposito da Rocha <rocha.ora...@gmail.com>
>>
>>  **
>>>
>>>
>>>
>>> Boa tarde,
>>>
>>> em algumas versões do oracle (10g) ao utilizar um select com a estrutura
>>> abaixo não retorna nenhuma informação.
>>>
>>> SELECT *
>>> FROM (SELECT *
>>> FROM QUALQUER_TABELA t)
>>> WHERE ROWNUM = 1
>>>
>>> Porém se colocar a condição <=funciona normalmente.
>>>
>>> Em várias consultas da aplicação utilizamos a condição rownum = 1. Existe
>>> algumconfigurações ou atualização que resolva
>>> este problema sem ter que alterar todas consultas da aplicação?
>>>
>>> Soluçãojá aplicadaem alguma consultas:
>>>
>>> SELECT *
>>> FROM (SELECT *
>>> FROM QUALQUER_TABELA t)
>>> WHERE ROWNUM <= 1
>>>
>>> Atenciosamente,
>>>
>>> Rafael Bahr
>>>
>>>
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>>
>>
>> ------------------------------**------
>>
>> ------------------------------**------------------------------**
>> ------------------------------**------------------------------**--
>>
>>> Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de
>>> inteira responsabilidade de seus remetentes.
>>>
>> Acesse: 
>> http://www.mail-archive.com/**oracle_br@yahoogrupos.com.br/<http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/>
>> ------------------------------**------------------------------**
>> ------------------------------**------------------------------**--
>>
>>> Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package »
>>> Procedure » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO!
>>> VISITE: http://www.oraclebr.com.br/
>>>
>> ------------------------------**------------------------------**
>> ------------------------------**------------------------------ Links do
>> Yahoo! Grupos
>>
>>
>>
>>
>


[As partes desta mensagem que não continham texto foram removidas]

Responder a