As instruções IF…ELSE no MS SQL Server

Em geral, o IF…ELSE é uma instrução de tomada de decisão em várias linguagens de programação. A instrução IF é utilizada para executar um bloco de código se uma condição for satisfeita. Se uma condição não for satisfeita (FALSE) então opcionalmente a instrução ELSE pode ser usada.

No caso do SQL Server, a instrução IF é usada para executar instruções SQL se uma condição for VERDADEIRA.

Por exemplo:

1
2
3
4
5
6
7

SE @nome_da_tabela = ’empregados’
SELECCIONAR * DE sto_employees;
ELSE
SELECT * FROM sto_products;

No código acima, o @nome_da_mesa é uma variável. Se um valor atribuído a essa variável for “empregados”, a instrução IF recuperará os dados da tabela sto_employees. Se o valor da variável for qualquer outro que não seja “empregado”, a condição IF torna-se FALSO e a parte ELSE será executada.

I mostrará esta simples utilização nos exemplos abaixo com saída. Na última seção, eu também explicarei como preencher o propósito “ELSE IF” que não está disponível no SQL Server.

Um exemplo simples de uso da instrução IF sem ELSE

Deixe-me começar com um exemplo simples de uso da instrução IF SQL. Vamos avaliar uma variável do tipo int para verificar o seu valor. Se a condição for VERDADEIRA, a instrução IF deve imprimir uma instrução.

O código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

/*Declarando uma variável*/
DECLARE @val_chk INT;
/* Atribuição de um valye*/
SET @val_chk = 101;
/*Executar a declaração IF*/
IF @val_chk = 101
PRINT ‘A declaração IF é VERDADEIRA’;
GO

A saída do código acima é:

“A declaração IF é VERDADEIRA”

Como tal o valor da variável é 101.

E se a condição fosse FALSA?

Se a condição acima fosse FALSA, por exemplo, o valor da variável fosse diferente de 101, então nada aconteceria.

No cenário real, você pode querer executar uma instrução ou executar alguma ação, pois a condição na instrução IF é VERDADEIRA ou FALSA.

Para isso, use a instrução ELSE. A expressão dentro da instrução ELSE será executada se a condição na instrução IF não for satisfeita.

Veja uma demonstração abaixo do uso da instrução ELSE:

O CÓDIGO IF ELSE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

/*Declarando uma variável*/
DECLARE @val_chk INT;
/* Atribuição de um valye*/
SET @val_chk = 50;
/*Executar a declaração IF*/
IF @val_chk >= 101
PRINT ‘A declaração IF é VERDADEIRA’;
ELSE
PRINT ‘A instrução IF é FLASE’;
GO

A saída do código acima é “A instrução IF é FALSA” pois o valor da variável não é maior ou igual a 101,

Executar uma instrução SELECT baseada no valor VARCHAR

Agora, deixe-me mostrar um exemplo de uso de um valor de string na instrução IF. Uma variável string é declarada e atribuída a um valor.

Na instrução IF…ELSE, vamos verificar o valor da variável e executar a respectiva instrução SELECT. Dê uma olhada:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

/*Declarando uma variável de string*/
DECLARE @table_name VARCHAR(60);
/* Atribuição de um valor*/
SET @table_name = ’empregados’;
/*Executar a declaração IF*/
IF @table_name = ’empregados’
SELECT * FROM sto_employees;
ELSE
SELECT * FROM sto_products;
GO

>

A saída do código acima é:

SQL SE ELSE

E se tivermos várias opções para verificar? (NESTED IF)

Em exemplos acima, nós tínhamos apenas duas opções. Ou o valor é VERDADEIRO ou FALSO. Se VERDADEIRO, a instrução dentro do IF executa, caso contrário, a parte ELSE executa.

No caso de executar instruções SELECT, digamos que precisamos verificar diferentes nomes de tabela e executar a respectiva instrução SELECT para cada; então como podemos fazer isso?

A resposta está usando a instrução NESTED IF.

Por exemplo, se o valor da variável for ’empregados’ então execute o:

SELECT * FROM sto_employees;

Se o valor for produtos então execute:

SELECT * FROM sto_products;

Para qualquer outro valor:

SELECT * FROM sto_emp_salary_paid;

Ver como isto é traduzido para instruções NESTED IF em SQL:

Você pode ver, dentro da declaração ELSE, a palavra-chave BEGIN é usada onde outra declaração IF é colocada (o IF aninhado). Isto é terminado usando a palavra-chave END.

There, nós colocamos outra condição para verificar. Tente valores diferentes para a variável @table_name pelos seus próprios nomes de tabela e substitua na instrução SELECT também por experimentá-la você mesmo.

Ir outro nível na instrução NESTED IF

Apenas para mostrar que você pode aninhar-se em muitos níveis, eu vou mais longe usando outra instrução IF aninhada.

Então, o cenário é verificar o valor de uma variável (table_name). se o valor for produtos, então recupere os dados da tabela sto_products. Se o valor for empregados, obter os registros sto_employees. A terceira, se verificar se o valor da variável é ordens, buscar os registros na tabela de ordens.

Finalmente, a instrução ELSE para qualquer outro valor da variável deve obter os registros da tabela de salários pagos do empregado.

Veja o extrato de FI aninhado múltiplo para três condições mais ELSE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

/*Declarando uma variável de string*/
DECLARE @table_name VARCHAR(60);
/* Atribuição de um valor*/
SET @table_name = ‘produtos’;
/*Executar a declaração IF*/
IF @table_name = ’empregados’
SELECT * FROM sto_employees;
ELSE
BEGIN
IF @table_name = ‘produtos’
SELECT * FROM sto_products;
ELSE
SELECT * FROM sto_emp_salary_paid;
END ;
GO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

/*Declarando uma variável de string*/
DECLARARAR @table_name VARCHAR(60);
/* Atribuição de um valor*/
SET @table_name = ‘encomendas’;
/*Executar a declaração IF*/
IF @table_name = ’empregados’
SELECT * FROM sto_employees;
ELSE
BEGIN
IF @table_name = ‘produtos’
SELECT * FROM sto_products;
ELSE
BEGIN
IF @table_name = ‘encomendas’
SELECT * FROM sto_orders;
ELSE
SELECT * FROM sto_emp_salary_paid;
END ;
END ;
GO

Como eu defino o valor da variável como ordens, a declaração IF deve retornar os registros da tabela de sto_orders.

No código, você pode ver a terceira instrução IF iniciada após a segunda palavra-chave BEGIN.

Nota: Se você quiser usar a execução condicional na instrução SELECT então use a instrução CASE em SQL.

Deixe uma resposta

O seu endereço de email não será publicado.