Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

duvida sobre if

na aula anterior (aula 4) sobre controle de fluxo, foi usado o o comando

if object_id (' tabela ') is not null begin instruçãoend para fazer a validação .

na aula 5 , para utilizar o if não foi aberto a cadeia de begin e end.

minha dúvida é , quando é necessário usar o begin e end ?

OBRIGADO

5 respostas

Alef. Quando o seu bloco possui apenas um comando não é necessário no IF, agora, se possuir mais de um, para que seja executado todo o conjunto é necessário o BEGIN e o END.

Obrigado por responder. fiz alguns testes para tentar entender melhor o que você disse.

IF(SELECT COUNT(*) 'QTD' FROM [TABELA DE VENDEDORES])<1
    PRINT('MENOR QUE 1')

        IF(SELECT COUNT(*) 'QTD' FROM [TABELA DE VENDEDORES])< 2
    PRINT('MENOR QUE 2')

    IF(SELECT COUNT(*) 'QTD' FROM [TABELA DE VENDEDORES])<3
    PRINT('MENOR QUE 3')

    IF(SELECT COUNT(*) 'QTD' FROM [TABELA DE VENDEDORES])>8
    PRINT('MAIOR QUE 8')
    ELSE 
    PRINT('NENHUMA DAS CONDIÇÕES ACIMA ')

eu utilizei varias condições sem o 'BEGIN E END' mas funcionou normalmente. Pode me explicar melhor sobre conceito ? Obrigado pelo seu tempo

solução!

Olá Alef, tudo bem? É exatamente isso que o Euler falou, e isso vêm também das linguagens de programação, por exemplo, no Javascript podemos fazer um IF * da seguinte forma:

if (true)
  alert('Verdadeiro!');

Isso acontece porque se temos apenas uma linha de código para ser executada se a condição lógica for verdadeira então podemos omitir os { } (colchetes) no Javascript, já no SQL podemos também omitir o BEGIN e o END. Porém se temos mais de uma instrução para ser executada se a condição for verdadeira, então temos um bloco de código, assim precisamos indicar o começo e o fim desse conjunto (bloco) de instruções, no Javascript seria assim:

if (true) {
  alert('Primeira instrução Verdadeira!');
  alert('Segunda instrução Verdadeira!');
}

E no SQL seria:

IF(SELECT COUNT(*) 'QTD' FROM [TABELA DE VENDEDORES])<1
BEGIN
    PRINT('MENOR QUE 1')
    PRINT('MENOR QUE 1 TAMBEM')
END

E se tivermos duas instruções (ou mais) e não colocarmos os indicadores do bloco de instruções? O que deve acontecer é que só a primeira vai ser executada.

Espero ter esclarecido sua dúvida!

Se ajudou então, por favor, marque como resolvido.

Muito Obrigado Euler Jamos & Jonilson Sousa