definindo banco de dados para teste
--definindo banco de dados para teste use pubs;
select comum com o uso do TOP 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 authors
ao executar a linha acima é retornado o seguinte erro:
Quote
Server: Msg 170, Level 15, State 1, Line 9
Line 9: Incorrect syntax near '@top'.
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 authors
verifique 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.
Nenhum comentário:
Postar um comentário