[MEU 50º LIVRO]: BANCOS DE DADOS E ACESS - CURSO COMPLETO - DO BÁSICO AO VBA - 1602 páginas

Páginas: 1602 | Autor: Júlio Battisti | 40% de Desconto e 70h de Vídeo Aulas de Bônus

Você está em: PrincipalArtigosSQL Server 2005 › Capítulo 10 : 06
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 161 - Capítulo 10 - A Estrutura If...Else

Este é o bom e velho IF que existem em qualquer linguagem. A estrutura do IF...ELSE é a seguinte:

IF Teste_booleano

Comandos se o teste for verdadeiro

ELSE

  Comandos se o teste for falso

Vamos a um exemplo prático: Criar um Stored Procedure que recebe o nome de dois países como parâmetros de entrada. O Stored Procedure conta o número de pedidos enviados para cada país. O número de pedidos de cada país é armazenado em uma variável local do Stored Procedure. Depois, um teste é efetuado, utilizando a cláusula IF...ELSE e diferentes mensagens serão emitidas, dependendo do teste ser verdadeiro ou falso. O Stored Procedure será criado como o nome usp_ExIF e será gravado no Banco de Dados NwindAccess. As pesquisas serão feitas na tabela Pedidos do Banco de Dados NwindAccess, da instância SERVIDOR\SQL2005.

O comando para criar o Stored Procedure proposto é o seguinte:

USE NwindAccess

GO

CREATE PROCEDURE usp_ExIF

   @país1 nvarchar(15),

   @país2 nvarchar(15)

AS

-- Cria  as variáveis locais

DECLARE @TotPed1 int, @TotPed2 int

DECLARE @mensagem1 Char(100), @mensagem2 Char(100)

-- Define o valor de cada variável

SET @TotPed1 = (SELECT Count(NúmeroDoPedido) FROM Pedidos WHERE PaísDeDestino=@país1)

SET @TotPed2 = (SELECT Count(NúmeroDoPedido) FROM Pedidos WHERE PaísDeDestino=@país2)

-- Executo o teste, utilizando IF...ELSE

IF (@TotPed1) > (@TotPed2)

   BEGIN

SET @mensagem1= ‘O Número de pedidos do primeiro país é maior’

Print(@mensagem1)

   END

ELSE

   BEGIN

SET @mensagem2= ‘O Número de pedidos do segundo país é maior’

Print(@mensagem2)

   END

Para executarmos este Stored Procedure, utilizamos o seguinte comando:

exec usp_ExIF “Brasil”,“EUA”

O Stored Procedure usp_ExIF é executado e a seguinte mensagem é emitida:

O Número de pedidos do segundo país é maior

Como somos um pouco “desconfiados”, vamos conferir se o Stored Procedure está funcionando corretamente. Para isso, vamos simplesmente inverter os dois parâmetros, conforme indicado no comando a seguir:

exec usp_ExIF “EUA”,“Brasil”

O Stored Procedure usp_ExIF é executado e a seguinte mensagem é emitida:

O Número de pedidos do primeiro país é maior

Isto confirma o funcionamento do nosso Stored Procedure. Como nós estamos com “más intenções”, vamos tentar “confundir” o Stored Procedure usp_ExIF. Vamos passar o mesmo país para os dois parâmetros, conforme indicado no comando a seguir:

exec usp_ExIF “EUA”,“EUA”

O Stored Procedure usp_ExIF é executado e a seguinte mensagem é emitida:

O Número de pedidos do segundo país é maior

Opa !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Um pequeno “bug” no nosso Stored Procedure????

É isso mesmo.

Observe o seguinte trecho de código:

IF (@TotPed1) > (@TotPed2)

   BEGIN

   SET @mensagem1= ‘O Número de pedidos do primeiro país é maior’

   Print(@mensagem1)

   END

ELSE

  BEGIN

SET @mensagem2= ‘O Número de pedidos do segundo país é maior’

Print(@mensagem2)

   END

Veja que apenas testamos se o número de pedidos do país 1 é maior do que o número de pedidos do país 2 (IF (@TotPed1) > (@TotPed2)). Se o número de pedidos for igual – o que aconteceu quando passamos o mesmo país para os dois parâmetros de entrada –, o teste falha e serão executados os comandos da parte ELSE. Para corrigir este pequeno bug, temos que alterar o Stored Procedure, prevendo uma terceira situação, na qual o número de pedidos dos dois países é igual. Bem, digamos que este foi um bug introduzido de propósito. Pois agora aprenderemos dois novos detalhes:

  • A estrutura IF com mais do que um ELSE.
  • O comando ALTER PROCEDURE, para alterar um Stored Procedure já existente.

Exemplo prático: Utilizar o comando ALTER PROCEDURE, para alterar o Stored Procedure usp_ExIF e corrigir o “bug” existente. Para fazer esta alteração, utilizamos o seguinte comando:

USE NwindAccess

GO

ALTER PROCEDURE usp_ExIF

   @país1 nvarchar(15),

   @país2 nvarchar(15)

AS

-- Cria  as variáveis locais

DECLARE @TotPed1 int, @TotPed2 int

DECLARE @mensagem1 Char(100), @mensagem2 Char(100)

DECLARE @mensagem3 Char(100)

-- Define o valor de cada variável

SET @TotPed1 = (SELECT Count(NúmeroDoPedido) FROM Pedidos WHERE PaísDeDestino=@país1)

SET @TotPed2 = (SELECT Count(NúmeroDoPedido) FROM Pedidos WHERE PaísDeDestino=@país2)

-- Executo o teste, utilizando IF...ELSE

IF (@TotPed1) > (@TotPed2)

   BEGIN

       SET @mensagem1= ‘O Número de pedidos do primeiro país é maior’

       Print(@mensagem1)

   END

ELSE

   IF (@TotPed1)<(@TotPed2)

   BEGIN

       SET @mensagem2= ‘O Número de pedidos do segundo país é maior’

       Print(@mensagem2)

   END

ELSE

   BEGIN

       SET @mensagem3= ‘O Número de pedidos dos dois países é igual’

       Print(@mensagem3)

END

Observe que, para alterar o Stored procedure, utilizamos o comando ALTER PROCEDURE e, após a cláusula AS, temos que informar todos os comandos que irão redefinir o Stored Procedure. Os comandos informados irão substituir o conjunto de comandos existentes.

Somente o “dono” do Stored Procedure e as roles sysadmin, db_owner e db_ddladmin é que têm permissão para executar o comando ALTER PROCEDURE. Esta permissão não pode ser atribuída a outros usuários ou roles.

Vamos testar novamente o Stored Procedure.

Para executarmos este Stored Procedure, utilizamos o seguinte comando:

exec usp_ExIF “Brazil”,“EUA”

O Stored Procedure usp_ExIF é executado e a seguinte mensagem é emitida:

O Número de pedidos do segundo país é maior

OK. Este é o resultado esperado. Vamos continuar nossos testes. Execute o seguinte comando:

exec usp_ExIF “EUA”,“Brasil”

O Stored Procedure usp_ExIF é executado e a seguinte mensagem é emitida:

O Número de pedidos do primeiro país é maior

Maravilha. Estamos quase lá. Só falta o derradeiro teste. Execute o seguinte comando:

exec usp_ExIF “EUA”,“EUA”

O Stored Procedure usp_ExIF é executado e a seguinte mensagem é emitida:

O Número de pedidos dos dois países é igual

Maravilha !!!!!!!!!!!!!!!

Isto comprova que o bug foi corrigido.

Mais alguns comentários sobre o exemplo anterior:

  • Utilizamos a cláusula DECLARE, para declarar variáveis locais, que são utilizadas pelo Stored Procedure. A sintaxe para o comando DECLARE, é a seguinte:

DECLARE @variável1 tipo, @variável2 tipo

  • Para atribuir valores a uma variável local, utilizamos o comando SET. A sintaxe para o comando SET é a seguinte:

SET @variável = valor

  • Observe que o resultado retornado, por um comando SELECT, foi atribuído a uma variável local, como no exemplo:

SET @TotPed1 = (SELECT Count(NúmeroDoPedido) FROM Pedidos WHERE PaísDeDestino=@país1)
SET @TotPed2 = (SELECT Count(NúmeroDoPedido) FROM Pedidos WHERE PaísDeDestino=@país2)

Agora vamos aprender mais uma estrutura de controle.

« 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 »

Best Sellers de Excel do Julio Battisti

Todos com Vídeo Aulas, E-books e Planilhas de Bônus!

Aprenda com Júlio Battisti:
Excel 2010 Básico em 140 Lições - Através de Exemplos Práticos - Passo a Passo

 Aprenda com Júlio Battisti: Excel 2010 Básico em 140 Lições - Através de Exemplos Práticos

 

Autor: Júlio Battisti | Páginas: 540 | Editora: Instituto Alpha

 

[Livro]: Aprenda com Júlio Battisti: Excel 2010 Básico em 140 Lições - Através de Exemplos Práticos

Aprenda com Júlio Battisti: Excel 2010 Avançado, Análise de Dados, Tabelas Dinâmicas, Funções Avançadas, Macros e Programação VBA - Passo a Passo

Livro: Aprenda com Júlio Battisti: Excel 2010 Avançado, Análise de Dados, Tabelas Dinâmicas, Funções Avançadas, Macros e Programação VBA - Passo a Passo

 

Autor: Júlio Battisti | Páginas: 952 | Editora: Instituto Alpha

 

Livro: Aprenda com Júlio Battisti: Excel 2010 Avançado, Análise de Dados, Tabelas Dinâmicas, Funções Avançadas, Macros e Programação VBA - Passo a Passo

Aprenda com Júlio Battisti: Macros e Programação VBA no Excel 2010 Através de Exemplos Práticos e Úteis - Passo a Passo

 

[LIVRO]: Aprenda com Júlio Battisti: Macros e Programação VBA no Excel 2010 Através de Exemplos Práticos e Úteis - Passo a Passo

 

Autor: Júlio Battisti | Páginas: 1124 | Editora: Instituto Alpha

 

[LIVRO]: Aprenda com Júlio Battisti: Macros e Programação VBA no Excel 2010 Através de Exemplos Práticos e Úteis - Passo a Passo

Aprenda com Júlio Battisti: Excel 2010 - Curso Completo - Do Básico ao Avançado, Incluindo Macros e Programação VBA - Através de Exemplos Práticos

 

[A BÍBLIA DO EXCEL]: Aprenda com Júlio Battisti: Excel 2010 - Curso Completo - Do Básico ao Avançado, Incluindo Macros e Programação VBA - Através de Exemplos Práticos Passo a Passo

 

Autor: Júlio Battisti | Páginas: 1338 | Editora: Instituto Alpha

 

[A BÍBLIA DO EXCEL]: Aprenda com Júlio Battisti: Excel 2010 - Curso Completo - Do Básico ao Avançado, Incluindo Macros e Programação VBA - Através de Exemplos Práticos Passo a Passo

Todos os livros com dezenas de horas de vídeo aulas de bônus, preço especial (alguns com 50% de desconto). Aproveite. São poucas unidades de cada livro e por tempo limitado.

Dúvidas?

Utilize a área de comentários a seguir.

Me ajude a divulgar este conteúdo gratuito!

Use a área de comentários a seguir, diga o que achou desta lição, o que está achando do curso.
Compartilhe no Facebook, no Google+, Twitter e Pinterest.

Indique para seus amigos. Quanto mais comentários forem feitos, mais lições serão publicadas.

Quer receber novidades e e-books gratuitos?
›››

Novidades e E-books grátis

Fique por dentro das novidades, lançamento de livros, cursos, e-books e vídeo-aulas, e receba ofertas de e-books e vídeo-aulas gratuitas para download.



Institucional

  • Quem somos
  • Garantia de Entrega
  • Formas de Pagamento
  • Contato
  • O Autor
  • Endereço

  • 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-2017 ®

    [LIVRO]: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2010 - PASSO-A-PASSO

    APRENDA COM JULIO BATTISTI - 1124 PÁGINAS: CLIQUE AQUI