Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
veremos como utilizar a função ROWCOUNT para realizar uma consulta com a quantidade de retorno de registros de forma dinâmica, definindo o quantidade de retorno de linhas por uma varável
definindo banco de dados para teste
--definindo banco de dados para teste use pubs;select comum com o uso do [TOP](http://msdn2.microsoft.com/en-us/library/aa259187%28SQL.80%29.aspx) fixo
--select comum com o uso do TOP fixo select top 10 * from authors caso tentarmos passar a quantidade a ser usada pelo TOP por uma variável, o sql server não aceita
declare @top int set @top = 3 select top @top * from authorsao executar a linha acima é retornado o seguinte erro:
>
Server: Msg 170, Level 15, State 1, Line 9
Line 9: Incorrect syntax near '@top'.
para contornar o erro acima poderiamos usar o EXEC e deixar a query em string, mas desta forma a execução perde performance (nada de anormal, mas perde)
declare @top int set @top = 3 exec ('select top ' + @top + ' * from authors')
Uma forma de conseguir o mesmo resultado sem usar o EXEC seria com o comando SET ROWCOUNT, ao setar o ROWCOUNT, são afetados somente as quantidades de registros definida para os comandos SELECT, DELETE, INSERT e UPDATE
E com o ROWCOUNT tem-se a opção de ser passado a quantidade por variável
exemplo:
declare @top int set @top = 3 set rowcount @top --somente serão retornados 3 registros select * from authors
testando no update:
--adicionando uma coluna de testes na tabela authors, seu valor padrão ficará como NULL alter table authors add ColunaTeste char(1) --definindo quantidade de registros a serem processados declare @top int set @top = 3 set rowcount @top --fazendo update, repare que esta sem WHERE, mas serão executados somente 3 registros update authors set ColunaTeste = 'x'
para voltar a quantidade de registros a serem processados para o normal, ou seja, todos, basta setar o ROWCOUNT para ZERO (0)
set rowcount 0 select * from authorsverifique que na nossa coluna de testes, somente foram processados no update 3 registros
para remover a coluna de testes
alter table authors drop column ColunaTeste
AUTOR: "eriva_br"
Dúvidas, criticas, contribuições, correções e adições seram bem vindas.