Laço While no SQL Server

26/03/2020

0

SQL

Boa noite. Gostaria de saber se é possível fazer um laço while utilizando uma tabela do meu BD. O objetivo é percorrer a tabela inteira e caso u teste booleano seja positivo, eu faço um uodate na mesma tabela, mais precisamente, eu quero percorrer a tabela e verificar se uma coluna tem valor '1' em caso positivo, eu faço um update em outra coluna com o valor '0'. vi que da pra usar o while utilizando incremento, mas é possível fazer algo da forma como eu descrevi?
Neio Moutinho

Neio Moutinho

Responder

Posts

26/03/2020

Emerson Nascimento

é possível.
algo assim:
-- cria as variáveis que receberão o conteúdos
-- dos campos da instrução SQL
-- obviamente cada variável precisa ser do mesmo tipo
-- de dados do campo do qual receberá o conteúdo
DECLARE	@campo1 int, @campo2 nvarchar(50),  
		@campo3 varchar(80), @campo4 nvarchar(50);  
  
-- prepara a instrução que retornará os dados.
-- pode usar todos os recursos da linguagem:
-- WHERE, JOIN (INNER/LEFT/OUTER/RIGHT), 
-- GROUP BY, ORDER BY, HAVING
-- etc...
DECLARE cursor_dados CURSOR LOCAL
FOR	SELECT CPO1, CPO2, CPO3, CPO4
	FROM TABELA
	WHERE BLA, BLA, BLA
	ORDER BY BLA, BLA, BLA;

-- seleciona os dados e joga na memória
OPEN cursor_dados;

-- pega os dados da primeira linha da query
-- e coloca o conteúdo na variável.
-- a ordem das variáveis em INTO deve obedecer
-- a ordem dos campos da instrução SQL.
FETCH NEXT FROM cursor_dados
INTO @campo1, @campo2, @campo3, @campo4;

-- enquanto houver dados
WHILE @@FETCH_STATUS = 0  
BEGIN
	-- se o conteúdo de @campo1 for igual a 1, atualiza a tabela2
	IF (@campo1 = 1)
		UPDATE TABELA2 SET CAMPOX = 0 WHERE CAMPOA = @campo2 AND CAMPOB = @campo3;

	-- pega os dados da próxima linha da query
	FETCH NEXT FROM cursor_dados
	INTO @campo1, @campo2, @campo3, @campo4;
END

-- fecha os dados 
CLOSE cursor_dados;  

-- libera a memória alocada para os dados
DEALLOCATE cursor_dados; 

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar