Limitar Linhas

Delphi

21/05/2008

Como faço para trazer apenas determinado numeros de linhas em uma Query usando Sql ANSI? Ex: No Transact-Sql eu usaria o Top, tipo:
SELECT TOP 10 * FROM TABELA, isso me traria as 10 primeiras linhas. Como faço a mesma coisa, mas usando Sql ANSI?


Paulo

Paulo

Curtidas 0

Respostas

Eniorm

Eniorm

21/05/2008

posso estar errado mas isso varia de banco para banco?

por exemplo no [b:d53aa1fa3b]Firebird [/b:d53aa1fa3b]eu uso assim

[b:d53aa1fa3b]SELECT FIRTS 50 FROM TABELA[/b:d53aa1fa3b]

me tras os primeiros 50 registros, ou

[b:d53aa1fa3b]SELECT FIRST 10 SKIP 50 FROM TABELA[/b:d53aa1fa3b]

me tras os primeiros 10 registros após saltar 50 registros da tabela.

abraço


GOSTEI 0
Paulo

Paulo

21/05/2008

Valeu Enio, é isso mesmo, mas essa sintaxe funciona em outros bancos? Aqui no momento só tenho FB, apesar de usarmos Oracle aqui, mas só testei no FB e funcionou.


GOSTEI 0
Paulo

Paulo

21/05/2008

Acabei de testar no Oracle e não funcionou. Gostaria de saber se tem alguma coisa assim em SQL ANSI, ou seja, pra todos os bancos.


GOSTEI 0
Eniorm

Eniorm

21/05/2008

Acabei de testar no Oracle e não funcionou.


foi oq eu pensei é padrão do firebird, vc vai ter que pesquisar por quais são os comandos que o Oracle possui para tal finalidade. Essa eu fico te devendo rsrsrs

abraço


GOSTEI 0
Paulo

Paulo

21/05/2008

Vou caçar alguma coisa na NET e ver se acho uma instrução SQL ANSI 92.


GOSTEI 0
Brunodsr

Brunodsr

21/05/2008

Use o rownum do oracle.

Esses comandos nao sao ansi, eles sao rotinas de banco. É bom sempre que for usar algo do tipo, procurar no manual do banco. Abaixo o exemplo.

select * from tabela
where rownum < 50

Obs.: Se vc ordenar os dados o rownum nao sera reordenado e vc vai precisar de um subselect. Abaixo o exemplo2:

Select * from
(select * from tabela where rownum < 50 order by id)
where rownum < 50

Espero ter ajudado.


GOSTEI 0
Brunodsr

Brunodsr

21/05/2008

Desculpem.. corrigindo a segunda query

Select * from
(select * from tabela order by id)
where rownum < 50

Um abraco,
Bruno Rocha


GOSTEI 0
Paulo

Paulo

21/05/2008

Bruno, Rownum só funciona no Oracle. Eu gostaria de algo que servisse em qualquer banco, ou seja, usando SQL ANSI 92 ou 99.
Sql Server >> TOP Firebird >> First Oracle >> Rownum MySql >> Limit
Mas eu gostaria de algo do SQL padrão e não específico, se houver.


GOSTEI 0
Brunodsr

Brunodsr

21/05/2008

Olá Paulo!

Ví o seu post agora. Essas funções são próprias dos bancos e inclusive implementadas de formas diferentes, como o cast, convert, case, decode, TO_DATE etc. Cada banco implementa de uma forma.

Como falei em um post anterior, é sempre bom dar uma olhada no manual do banco que vc tá usando p/ verificar se ele suporta a função desejada e qual a sintaxe correta.

Um abraço


GOSTEI 0
POSTAR