Limit

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
jks1903
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 188
Registrado em: Qui, 04 Fev 2010 8:08 am

Estou fazendo uma consulta para exibir os dados em uma página web.

Porém, por serem muitos registros eu gostaria de paginá-los.

Vi que em alguns bancos existe o comando limit para mostrar somente alguns registros.

Exemplo:

Select * from tabela limit 20,30

isso exibiria os 30 registros após o registro numero 20.

Como posso implementar isso no Oracle?
kpetersen
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Sex, 25 Fev 2011 10:02 pm
Localização: Rio de Janeiro

Tenta rownum ao invés de limit.
jks1903
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 188
Registrado em: Qui, 04 Fev 2010 8:08 am

Para as primeiras linhas serve o rownum.

Porém quando eu precisar um intervalo da linha 100 até a 150 por exemplo, com o rownum eu não consigo.

Procurando na net eu encontrei alguns metodos implementados "no braço" mesmo, acho que o Oracle não possui algum critério desse tipo nativo.
burga
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Qui, 26 Nov 2009 1:05 pm
Localização: SP
Ricardo H. Tajiri

Como rownum você deve fazer o seguinte:

Selecionar tudo

SELECT * FROM (
  SELECT ROWNUM RN, t.* FROM (
    SELECT * 
    FROM tabela 
    ORDER BY algum_campo) t
  WHERE ROWNUM < 30)
WHRE RN > 20; 
A idéia é essa... Outras formas de fazer isso:

Selecionar tudo

SELECT * FROM (
  SELECT ROWNUM RN, t.* 
  FROM tabela t
  ORDER BY algum_campo)
WHERE RN > 20 AND RN < 30; 

Selecionar tudo

SELECT * FROM (
  SELECT ROW_NUMBER() OVER (ORDER BY algum_campo) RN, t.* 
  FROM tabela t)
WHERE RN BETWEEN 20 AND 30;
E aí você vai brincando do jeito que quiser... Mas a idéia principal é usar subccosultas.
jks1903
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 188
Registrado em: Qui, 04 Fev 2010 8:08 am

Certo, entendi a "maldade", rsrs

Vou tentar implementar aqui, vlw mesmo.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes