Estamos de volta para hoje falar de mais um assunto sobre a linguagem SQL. Em nosso ultimo artigo mostramos como funcionam as VIEWS, acompanhe esse artigo em Desvendando o SQL - Parte V - Visoes, e tambem os outros artigos de nossa serie, os links estao sempre no final de nossos artigos. Hoje vamos falar um pouco sobre as instrucoes condicionais e instrucoes de repeticao. Boa leitura e estudos Em determinadas situacoes nos deparamos com consultas que para obtermos um resultado dependemos de outro ou precisamos que determinada instrucao se repita algumas vezes, e exatamente nessas situacoes que utilizamos as instrucoes condicionais (CASE, IF) e as instrucoes de repeticao (WHILE).INSTRUCOES CONDICIONAIS (IF)Com uma sintaxe simples esta expressao impoe uma condicao para execucao de uma instrucao SQL. Se a condicao retorna TRUE (Verdadeiro) a instrucao e executada. Caso se deseje a execucao de uma instrucao quando a condicao nao for satisfeita, retornando FALSE (Falso), incluimos a palavra chave ELSE, e o que nessa clausula sera executado.SintaxeIF <Condicao> Bloco de instrucoes[ELSE Bloco de instrucoes] A construcao apresentada IF...ELSE pode ser usada em procedimentos armazenados (veremos em breve) e em consultas ad hoc. Inclusive podemos aninhar os blocos de IF...ELSE, colocando um dentro do outro.ExemplosA. Expressoes Simples--O exemplo a seguir tem uma expressao booliana simples (1=1) que e verdadeira e, portanto, imprime a primeira instrucao.IF 1 = 1 PRINT 'Expressao e verdadeira'ELSE PRINT 'Expressao e falsa' ;--O exemplo a seguir tem uma expressao booliana simples (1=2) que e falsa e, portanto, imprime a segunda instrucao.IF 1 = 2 PRINT 'Expressao e verdadeira'ELSE PRINT 'Expressao e falsa' ;GOB. Usando uma consulta como parte de uma expressao booliana. O exemplo a seguir executa uma consulta como parte da expressao booliana. Vamos descobrir se existem mais de 5 produtos com a categoria de bebidas.USE DBEstoque;GOIF (SELECT COUNT(*) FROM TBProduto p inner join TBSubcategoria s ON s.CD_SUB = p.CD_SUBWHERE s.CD_CATEGORIA = 1) > 5PRINT 'Existem mais de 5 produtos com a categoria Bebidas'ELSE PRINT 'Existem 5 ou menos produtos com a categoria Bebidas' ;GOC. Usando um bloco de instrucao.O exemplo a seguir executa uma consulta como parte da expressao booliana e depois executa blocos de instrucao ligeiramente diferentes com base no resultado da expressao booliana. Cada bloco de instrucao comeca com BEGIN e termina com END. Caso a instrucao seja somente de uma linha nao ha necessidade do bloco BEGIN...END. GODECLARE @AvgCount decimal(8,2), @ProdCount int, @Count intset @Count = (SELECT COUNT(*) FROM TBProduto p inner join TBSubcategoria s ON s.CD_SUB = p.CD_SUB WHERE s.CD_CATEGORIA = 1)IF @Count > 5BEGIN SET @ProdCount = (SELECT COUNT(*) FROM TBProduto p inner join TBSubcategoria s ON s.CD_SUB = p.CD_SUB WHERE s.CD_CATEGORIA = 1); SET @AvgCount = AVG(@ProdCount); PRINT 'Existem ' + CAST(@ProdCount AS varchar(3)) + ' com a categoria Bebidas' PRINT 'A media de produtos com contagem maior que 5 e: ' + CAST(@AvgCount AS varchar(8)) + '.';ENDELSE BEGIN SET @ProdCount = (SELECT COUNT(*) FROM TBProduto p inner join TBSubcategoria s ON s.CD_SUB = p.CD_SUB WHERE s.CD_CATEGORIA = 1); SET @AvgCount = AVG(@ProdCount); PRINT 'A media de produtos com contagem menor ou igual