quinta-feira, 3 de janeiro de 2013

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 de variáveis, o uso de elementos de controle de fluxo e também o uso de Stored Procedures (que serão abordados no próximo artigo do curso). Assim conseguimos incluir uma determinada lógica em nossas querys.
Variáveis de Usuário – Uma variável local do Transact SQL é um objeto nos scripts e batches que mantém um valor de dado. Através do comando DECLARE, podemos criar 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
1
2
3
4
5
6
7
8
9
10
11
--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. Podemos notar 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


1
2
3
4
5
DECLARE @IdUsuario AS INT, @Nome AS VARCHAR(50), @Idade AS SMALLINT
SET @IdUsuario = 1
SELECT @Nome = ColunaNome FROM Tabela @Idade = ColunaIdade FROM Tabela
Seja com SET ou SELECT, conseguimos atribuir valor as variáveis, depende da necessidade de cada desenvolvedor.
Controle de Fluxo – Assim como muitas linguagens de programação utilizam operadores de condição, o SQL não poderia ficar de fora. Ele trabalha com esses elementos, 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 seu sistema. 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 posteriormente executado. Podemos aninhar blocos de comando utilizando estes elementos.
Caso seja executado um bloco de comandos logo após a realização de um teste de condição, os elementos BEGIN e END, são usados logo após um comando IF ou WHILE. 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 um comando Transact-SQL é executado. O IF e ELSE funcionam similarmente aos comandos de mesmo nome usados em linguagens como C# por exemplo, para testar condiçõ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 na expressã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 com IF/ELSE.
Listagem 03 – Exemplo com IF/ELSE e BEGIN/END
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
IF @IdUsuario > 0
BEGIN
SELECT IdUsuario
FROM Clientes
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 lista de 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: a função simples e a função pesquisada. Com a primeira, o resultado é obtido por meio da comparação de uma expressão com uma série de expressões simples. Na segunda função, é obtido um resultado específico a partir de um conjunto de expressõ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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 de comandos SQL seja executado repetidamente, ou seja, é criado um loop o comando ou bloco de comandos, que será executado enquanto a condição especificada for verdadeira.
A Listagem 05 nos dá um exemplo prático do uso do WHILE.
Listagem 05 – Exemplo de uso do comando WHILE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 a cada “passada” do laço. Esse incremento será feito até que o valor da variável chegue a 10.
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 desejamos interromper o loop em um determinado ponto. O BREAK também pode ser usado para finalizar 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 chegar ao número 5, o loop será interrompido pelo BREAK.
WHILE com CONTINUE – Com o CONTINUE é possível reiniciar a execução de um loop executado pelo WHILE e interrompido pelo BREAK. Da mesma forma que o 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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.

Fonte de pesquisa devmedia.com.br

Nenhum comentário:

Postar um comentário