programando no sql server.pdf
TRANSCRIPT
7/21/2019 Programando no SQL Server.pdf
http://slidepdf.com/reader/full/programando-no-sql-serverpdf 1/5
Programando no SQL Server
Neste artigo veremos os conceitos, sintaxes e exemplos
práticos sobre os comandos utilizados para programar
no SQL Server.
Introdução – O uso da programação no SQL Server envolve a criação e uso devariáveis, o uso de elementos de controle de fluxo e também o uso de StoredProcedures (que serão abordados no próximo artigo do curso). Assim conseguimosincluir uma determinada lógica em nossas querys.
Variáveis de Usuário – Uma variável local do Transact SQL é um objeto nos scriptse batches que mantém um valor de dado. Através do comando DECLARE, podemoscriar variáveis locais, sendo feito isso no corpo de uma procedure ou batch.
Podemos ver abaixo, na Listagem 01, dois exemplos de declarações de variáveis,ambos estão corretos, depende do programador qual irá utilizar.
Listagem 01 – Declaração de Variáveis Locais
--Exemplo 1
DECLARE @IdUsuario AS INT, @Nome AS VARCHAR(50), @Idade AS SMALLINT
--Exemplo 2
DECLARE @IdUsuario AS INT
DECLARE @Nome AS VARCHAR(50)
DECLARE @Idade AS SMALLINT
Em ambos os exemplos temos o uso do caractere coringa @ antes da variável. Este éum padrão para declarar variáveis e deve ser seguido pelos programadores. Podemosnotar ainda que cada variável declarada tem seu datatype atribuído.
Obs.: Lembrando que o AS é um alias e seu uso é opcional.
É possível atribuir valores para cada uma das variáveis. Para isso, usamos o comando
SET ou o SELECT, como vemos no exemplo da Listagem 02.
Listagem 02 – Atribuindo valores para as variáveis declaradas
DECLARE @IdUsuario AS INT, @Nome AS VARCHAR(50), @Idade AS SMALLINT
SET @IdUsuario = 1
SELECT @Nome = ColunaNome FROM Tabela @Idade = ColunaIdade FROM Tabela
7/21/2019 Programando no SQL Server.pdf
http://slidepdf.com/reader/full/programando-no-sql-serverpdf 2/5
Seja com SET ou SELECT, conseguimos atribuir valor as variáveis, depende danecessidade de cada desenvolvedor.
Controle de Fluxo – Assim como muitas linguagens de programação utilizamoperadores de condição, o SQL não poderia ficar de fora. Ele trabalha com esseselementos, também denominado de controle de fluxo, permitindo assim ao
desenvolvedor criar lógicas para as mais variadas situações e regras de negócio de seusistema. Os elementos de controle de fluxo que iremos ver são, nessa ordem,BEGIN/END, IF/ELSE, CASE/WHEN/THEN/END, WHILE e o TRY...CATCH.
BEGIN/END – Os elementos BEGIN e END tem o objetivo de iniciar e finalizar,respectivamente, um bloco de comandos, de maneira que este possa ser posteriormenteexecutado. Podemos aninhar blocos de comando utilizando estes elementos.
Caso seja executado um bloco de comandos logo após a realização de um teste decondição, os elementos BEGIN e END, são usados logo após um comando IF ouWHILE. Veremos mais a frente exemplos com o uso destes elementos.
IF/ELSE – Os elementos IF e ELSE são usados para testar condições quando umcomando Transact-SQL é executado. O IF e ELSE funcionam similarmente aoscomandos de mesmo nome usados em linguagens como C# por exemplo, para testarcondições de execução de comandos.
Confira abaixo a sintaxe do IF e ELSE no SQL:
IF Expressao_Booleana
{ comando_sql | bloco_comando }
[ ELSE
{ comando_sql | bloco_comando } ]
Sendo que o argumento Expressao_Booleana pode retornar TRUE ou FALSE. Se naexpressão booleana houver um comando SELECT, ele deve ser colocado entre
parênteses. Já o comando_sql | bloco_comando representa um comando Transact-
SQL ou um agrupamento de comandos.
Na Listagem 03 temos um exemplo com os elementos BEGIN/END em conjunto comIF/ELSE.
Listagem 03 – Exemplo com IF/ELSE e BEGIN/END IF @IdUsuario > 0
BEGIN
SELECT IdUsuario
FROM Clientes
7/21/2019 Programando no SQL Server.pdf
http://slidepdf.com/reader/full/programando-no-sql-serverpdf 3/5
WHERE IdUsuario = @IdUsuario
END
ELSE
BEGIN
SELECT TOP 1 @IdUsuario = IdUsuario
FROM Clientes
END
CASE/WHEN/THEN/END – O elemento CASE é utilizado para conferir uma listade condições e, então, retornar uma entre várias expressões de resultado possíveis.CASE, que é usado em conjunto com o comando SELECT, é útil quando a intençãoé a de evitar que sejam criados comandos IF aninhados. Ele é considerado como
uma alternativa ao IF. Dois formatos podem ser designados ao comando CASE: afunção simples e a função pesquisada. Com a primeira, o resultado é obtido pormeio da comparação de uma expressão com uma série de expressões simples. Nasegunda função, é obtido um resultado específico a partir de um conjunto deexpressões booleanas.
Na Listagem 04 pode ser visto um exemplo prático de uso do CASE.
Listagem 04 – Exemplo de uso do elemento CASE em um SELECT
SELECT IdProduto, Nome, Tipo =
CASE
WHEN 'A' THEN 'Produto Nacional'
WHEN 'B' THEN 'Produto dos Estados Unidos'
WHEN 'C' THEN 'Produto da China'
ELSE 'Produto de outros países'
END AS [Tipo do Produto]
FROM Produtos
WHILE – Assim como o IF/ELSE, o comando WHILE funciona da mesma forma
que nas linguagens de programação: ele faz com que um comando ou bloco decomandos SQL seja executado repetidamente, ou seja, é criado um loop o comando ou bloco de comandos, que será executado enquanto a condição especificada forverdadeira.
A Listagem 05 nos dá um exemplo prático do uso do WHILE.
Listagem 05 – Exemplo de uso do comando WHILE
7/21/2019 Programando no SQL Server.pdf
http://slidepdf.com/reader/full/programando-no-sql-serverpdf 4/5
DECLARE @Contador AS SMALLINT
SET @Contador = 1
WHILE @Contador <= 10
BEGIN
SELECT @Contador
SET @Contador = @Contador + 1
END
No exemplo acima inicializamos a variável @Contador e atribuímos a ela o valor 1.Logo após é especificado um loop onde dentro dele a variável será incrementada em 1 acada “passada” do laço. Esse incremento será feito até que o valor da variável chegue a10.
Utilizando os comandos BREAK e CONTINUE, que serão apresentados a seguir, é possível controlar de dentro do loop a execução dos comandos do WHILE.
WHILE com BREAK – Podemos usar o WHILE com BREAK quando desejamosinterromper o loop em um determinado ponto. O BREAK também pode ser usado parafinalizar a execução de um loop dentro de um comando IF/ELSE.
Vemos na Listagem 06 um exemplo com o uso do BREAK .
Listagem 06 – Exemplo do comando BREAK em conjunto com o WHILE
DECLARE @Contador AS SMALLINT
SET @Contador = 1
WHILE @Contador <= 10
BEGIN
SELECT @Contador
IF @Contador = 5
BREAK
SET @Contador = @Contador + 1
END
Com a execução do código acima será exibido em tela os números de 1 a 5. Ao chegarao número 5, o loop será interrompido pelo BREAK .
WHILE com CONTINUE – Com o CONTINUE é possível reiniciar a execução deum loop executado pelo WHILE e interrompido pelo BREAK . Da mesma forma que o
7/21/2019 Programando no SQL Server.pdf
http://slidepdf.com/reader/full/programando-no-sql-serverpdf 5/5
BREAK , o CONTINUE geralmente é iniciado por uma condição explicitada pelo IF.Havendo comandos após o CONTINUE, eles serão ignorados.
Podemos ver um exemplo com o CONTINUE na Listagem 07.
Listagem 07 – Exemplo do comando CONTINUE em conjunto com o WHILE
DECLARE @Contador AS SMALLINT
SET @Contador = 1
WHILE @Contador <= 10
BEGIN
SELECT @Contador
IF @Contador <= 5
BEGIN
SET @Contador = @Contador + 1
CONTINUE
END
BREAK
END
Fonte de Consulta: Apostila de SQL Server, da Impacta Tecnologia.
Leia mais em: Programando no SQL Server http://www.devmedia.com.br/programando-no-sql-server/22770#ixzz3B3oVWBt8