NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosSQL Server 2005 › Capítulo 10 : 07
Quer receber novidades e e-books gratuitos?
« Lição anterior Curso Completo de SQL Server 2005 - Júlio Battisti Δ Página principal Curso Completo de SQL Server 2005 - Júlio Battisti ¤ Capítulos Curso Completo de SQL Server 2005 - Júlio Battisti Próxima lição »
SQL Server 2005 - CURSO COMPLETO
Autor: Júlio Battisti
Lição 162 - Capítulo 10 - A Estrutura While...Continue

Esta estrutura faz com que um conjunto de comandos continue sendo executado, enquanto uma determinada condição for verdadeira.

A sintaxe para este comando é a seguinte:

WHILE Teste

BEGIN

     Comando1

     Comando2

     ...

     Comandon

END

Enquanto o teste for verdadeiro, os comandos dentro do bloco BEGIN...END continuarão a ser executados. Quando a condição tornar-se falsa, a execução continua no primeiro comando após o CONTINUE.

Os comandos dentro do bloco BEGIN...END devem modificar o valor da variável (ou variáveis) que estão sendo testadas no início do laço WHILE, caso contrário, a condição nunca se tornará falsa e o laço continuará executando sem parar. Veja o exemplo a seguir.

Exemplo: Vamos criar uma tabela chamada SomaNaturais. Esta tabela será criada no Banco de Dados NwindAccess e terá a seguinte estrutura:

Campo Tipo
Número float
SomaAcumulada float

Após criar a tabela SomaNaturais, vamos criar um Stored Procedure chamado usp_CalculaSoma, o qual calcula a soma dos “n” primeiros números inteiros e armazena a soma nas respectivas colunas, conforme indicado no exemplo a seguir:

Número SomaAcumulada
1 1
2 3
3 6
4 10
5 15

E assim por diante. O valor de n será passado como parâmetro de entrada para o Stored Procedure.

O primeiro passo é criar a tabela SomaNaturais. Para isto utilizamos o seguinte comando:

USE NwindAccess

GO

CREATE TABLE SomaNaturais

(

Número       float,

SomaAcumulada float

)

Agora vamos a criação do Stored Procedure:

USE NwindAccess

GO

CREATE PROCEDURE usp_CalculaSoma

      @numero  int

AS

-- Cria uma variável para controle do laço

-- e inicializa a variável com o valor 1.

DECLARE @contador int

SET @contador = 1

-- Cria uma variável para a soma

-- e inicializa a variável com o valor 0.

DECLARE @soma float

SET @soma = 0

WHILE (@contador<=@numero)

BEGIN

       SET @soma = @soma + @contador

       INSERT INTO SomaNaturais VALUES (@contador,@soma)

       SET @contador = @contador + 1

END

Observe o comando SET @contador = @contador + 1, no interior da estrutura WHILE. Se não colocássemos este comando, a variável @contador jamais se tornaria igual ao parâmetro @numero e o laço WHILE entraria em execução infinita. A criação de laços infinitos, é uma das causas mais comuns para o travamento de programas.

Agora vamos testar o Stored Procedure usp_CalculaSoma. Vamos passar como parâmetro o número 10. Para isso utilizamos o seguinte comando:

EXEC usp_CalculaSoma 10

A execução deste comando retorna a seguinte mensagem:

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

(1 row(s) affected)

Agora vamos dar um SELECT na tabela SomaNaturais. Utilize o seguinte comando:

SELECT * FROM SomaNaturais

Você obterá o seguinte resultado:

Número SomaAcumulada
1.0 1.0
2.0 3.0
3.0 6.0
4.0 10.0
5.0 15.0
6.0 21.0
7.0 28.0
8.0 36.0
9.0 45.0
10.0 55.0

Isto comprova que o stored Procedure usp_CalculaSoma está funcionando corretamente. Poderíamos fazer uma pequena modificação nele. Se executarmos novamente o usp_CalculaSoma, os registros existentes na tabela SomaNaturais serão mantidos e novos registros serão incluídos. O ideal é que somente sejam mantidos os registros da última execução. Para isso, basta excluirmos os registros já existentes. Isto é feito com um comando SQL que exclui todos os registros da tabela SomaNaturais, antes de entrar na estrutura WHILE. Vamos alterar o Stored Procedure usp_CalculaSoma para inserir este comando SQL. Para isso, utilizamos o seguinte comando:

USE NwindAccess

GO

ALTER PROCEDURE usp_CalculaSoma

      @numero  int

AS

-- Elimina os registros da tabela SomaNaturais

DELETE SomaNaturais

-- Cria uma variável para controle do laço

-- e inicializa a variável com o valor 1.

DECLARE @contador int

SET @contador = 1

-- Cria uma variável para a soma

-- e inicializa a variável com o valor 0.

DECLARE @soma float

SET @soma = 0

WHILE (@contador<=@numero)

BEGIN

       SET @soma = @soma + @contador

       INSERT INTO SomaNaturais VALUES (@contador,@soma)

       SET @contador = @contador + 1

END

« Lição anterior Curso Completo de SQL Server 2005 - Júlio Battisti Δ Página principal Curso Completo de SQL Server 2005 - Júlio Battisti ¤ Capítulos Curso Completo de SQL Server 2005 - Júlio Battisti Próxima lição »

você conhece a universidade do access?

Universidade do Access - Curso Completo de Access
com tudo para você dominar o Access - do Básico ao
Avançado - até a Criação de Sistemas Profissionais
Completos - Passo a Passo - Tela a Tela

Capa da Universidade do Access

Aplica-se ao Access 2019, 2016, 2013 e 2010!

13 Cursos - 574 Vídeo-Aulas - 63:32 horas

Para todos os detalhes, acesse:

https://juliobattisti.com.br/universidade-do-access.asp

Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2025 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI