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?
Limit
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.
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.
-
- 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:
A idéia é essa... Outras formas de fazer isso:
E aí você vai brincando do jeito que quiser... Mas a idéia principal é usar subccosultas.
SELECT * FROM (
SELECT ROWNUM RN, t.* FROM (
SELECT *
FROM tabela
ORDER BY algum_campo) t
WHERE ROWNUM < 30)
WHRE RN > 20;
SELECT * FROM (
SELECT ROWNUM RN, t.*
FROM tabela t
ORDER BY algum_campo)
WHERE RN > 20 AND RN < 30;
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY algum_campo) RN, t.*
FROM tabela t)
WHERE RN BETWEEN 20 AND 30;
Certo, entendi a "maldade", rsrs
Vou tentar implementar aqui, vlw mesmo.
Vou tentar implementar aqui, vlw mesmo.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes