pl sql operators control statements tutorial
Aprenda sobre diferentes operadores PL SQL e instruções de controle como if-then-else, for loop, while loop etc. com exemplos de exemplos de código:
No Comandos PL / SQL tutorial do PL / SQL series , aprendemos sobre os comandos PL SQL INSERT, UPDATE, DELETE e SELECT com exemplos de programação.
Neste artigo, discutiremos os diferentes operadores suportados pela PL / SQL, como operadores relacionais, lógicos, aritméticos e de comparação. Devemos também investigar as instruções de controle que são amplamente utilizadas na PL / SQL.
A condição PL / SQL e as estruturas iterativas foram explicadas em detalhes com exemplos aqui neste tutorial.
como abrir um arquivo .apk no windows
O que você aprenderá:
Operadores PL SQL
Um operador PL SQL direciona o compilador a fazer operações aritméticas e lógicas com a ajuda de um símbolo.
Por padrão, PL / SQL tem os seguintes tipos de operador:
- Aritmética
- Comparação
- Lógico
- Fragmento
- Relacional
# 1) Operadores aritméticos
Símbolo | Descrição | |
---|---|---|
7 | E | conjunção |
+ | Executa adição de dois operandos. | |
* | Executa a multiplicação de dois operandos. | |
/ | Executa a divisão de dois operandos. | |
- | Executa a subtração de dois operandos. | |
** | Executa operação exponencial. |
Implementação de código com operadores aritméticos:
declare a number(5):= 2; b number(5):= 1; res number(10); sub number(10); mul number(10); div number(10); exp number(10); begin -- adding a and b and storing in res res:= a+b; -- subtracting b from a and storing in sub sub:= a-b; -- multiplying a and b and storing in mul mul:= a*b; -- dividing a and b and storing in div div:= a/b; -- exponential operation and storing in exp exp:= a**b; dbms_output.put_line('Sum value is '||res); dbms_output.put_line('Subtraction value is '||sub); dbms_output.put_line('Multiplication value is '||mul); dbms_output.put_line('Division value is '||div); dbms_output.put_line('Exponential value is '||exp); end; /
A saída do código acima deve ser:
# 2) Operadores relacionais
Esses operadores realizam a comparação e retornam valores em Boolean.
Número de série. | Símbolo | Descrição |
---|---|---|
1 | > | Verifica se o valor do operando esquerdo é maior que direito. |
dois | < | Verifica se o valor do operando direito é maior que esquerdo. |
3 | > = | Verifica se o valor do operando esquerdo é maior que igual ao direito. |
4 | <= | Verifica se o valor do operando direito é maior que igual ao esquerdo. |
5 | = | Verifica se dois operandos são iguais. |
6 | ! =, ~ =, | Verifica se dois operandos não são iguais. |
Implementação de código com operadores relacionais:
DECLARE a NUMBER := 5; b NUMBER := 12; BEGIN IF a != b THEN DBMS_OUTPUT.PUT_LINE('a is not equal to b'); ELSIF a = b THEN DBMS_OUTPUT.PUT_LINE('a is equal to b'); ELSE DBMS_OUTPUT.PUT_LINE ('Not sure of the input'); END IF; END; /
A saída do código acima deve ser:
# 3) Operadores de comparação
Este operador fornece a saída como valor verdadeiro, falso ou nulo com base no resultado da comparação de uma instrução com a outra.
Símbolo | Descrição |
---|---|
ENTRE | Verifica se um valor está em um intervalo. |
NO | Verifica se um valor é igual a um conjunto de membros. |
GOSTAR | Verifica se uma string ou caractere é semelhante a um padrão. |
É NULO | Verifica se um operando é igual ao valor Nulo. |
Implementação de código com operador de comparação:
DECLARE i INTEGER; -- NULL value is set by default BEGIN i := i*5; -- i is still NULL since NULL * 5 is NULL IF i IS NULL THEN DBMS_OUTPUT.PUT_LINE('i is NULL.'); END IF; END; /
A saída do código acima deve ser:
# 4) Operadores lógicos
A PL / SQL oferece suporte a mais de um operador lógico. Eles agem em operandos que são de natureza booleana e também produzem resultados booleanos.
Número de série. | Símbolo | Descrição |
---|---|---|
1 | NÃO | Conhecido como NOT lógico. Se o resultado for verdadeiro, então NÃO o torna falso. |
dois | E | Conhecido como AND lógico. Se todos os operandos forem verdadeiros, o resultado será verdadeiro. |
3 | OU | Conhecido como OR lógico. Se qualquer um dos operandos for verdadeiro, o resultado será verdadeiro. |
Implementação de código com operadores lógicos:
declare n1 number := 5; n2 number := 10; n3 number := 15; begin if (n1 n2 or n1 = 5) then dbms_output.put_line ('The condition is true'); else dbms_output.put_line ('The condition is false'); end if; end; /
A saída do código acima deve ser:
operador precedente
A precedência do operador PL SQL é definida para definir como uma operação envolvendo um único ou vários operadores ou mais de um operando deve ser feita. Os operadores com precedência mais alta são calculados primeiro do que os outros, enquanto os operadores com a mesma precedência são manipulados em nenhuma sequência particular.
A tabela a seguir lista os operadores da precedência alta à baixa.
Número de série. | Símbolo | Descrição |
---|---|---|
1 | ** | operação exponencial |
dois | +, - | adição subtração |
3 | *, / | multiplicação, divisão |
4 | +, -, || | adição, subtração, concatenação |
5 | operadores de comparação | |
6 | NÃO | negação |
8 | OU | inclusão |
Instruções de controle em PL / SQL
As estruturas de controle em PL / SQL consistem em estruturas de programa como o iteração, sequência, e seleção . A forma de seleção verifica uma condição e, com base nos resultados de verdadeiro ou falso, processa o próximo bloco de código em ordem.
A forma de iteração executa um bloco de código ou instruções repetidamente até que a condição seja válida. Finalmente, a forma de sequência processa as declarações uma a uma na ordem em que estão presentes.
Declaração de condição em PL SQL
Em cenários de tomada de decisão, as declarações de condição como IF-THEN, IF-THEN-ELSE, IF-THEN-ELSEIF e CASE são usadas.
# 1) SE-ENTÃO: Esta é uma das formas básicas de declarações IF. Ele contém um bloco de código com as palavras-chave ENDIF e ENTÃO. Se o resultado de uma condição for verdadeiro, o próximo bloco de código será executado, caso contrário, não.
Estrutura de IF-THEN:
IF condition THEN Block of code END IF;
Também podemos manter um bloco IF –THEN curto em uma única linha como esta.
IF big > small THEN temp: = big; END IF;
Implementação de código com IF-THEN:
DECLARE i number(10,2) := 15; BEGIN -- checking the condition IF( i > 2 ) THEN -- true condition dbms_output.put_line('i is greater than 1 ' ); END IF; dbms_output.put_line('the numeric value of i is '|| i); END; /
A saída do código acima deve ser:
# 2) SE-ENTÃO-MAIS: Esta é a próxima forma de instrução IF que possui a palavra-chave ELSE e o próximo bloco de código. Este bloco de instruções ELSE é opcional e é executado quando a condição é FALSE.
Estrutura de IF-THEN-ELSE:
IF condition THEN Block of code 1 ELSE Block of code 2 END IF;
Implementação de código com IF-THEN-ELSE:
DECLARE num number(10,2) := 150; BEGIN -- checking the condition IF( num > 100 ) THEN -- true condition dbms_output.put_line('num is greater than 100 '); ELSE dbms_output.put_line('num is lesser than 100 '); END IF; dbms_output.put_line('value of number is : ' || num); END; /
A saída do código acima deve ser:
# 3) IF-THEN-ELSIF: Esta declaração condicional dá a opção de selecionar entre as alternativas. ELSE ... ELSE bloco de código pode vir opcionalmente após a instrução IF-THEN. Portanto, ele é usado ao lidar com várias escolhas mutuamente exclusivas.
Um bloco de código IF-THEN pode ter nenhum ou vários ELSIFs, desde que apareçam antes da instrução ELSE. Assim que encontrarmos uma condição verdadeira em um bloco ELSIF, outros ELSE ou ELSIFs serão ignorados.
Estrutura de IF-THEN-ELSIF:
IF condition 1 THEN Block of code 1 ELSIF condition 2 THEN Block of code 2 ELSE Block of code 3 END IF;
Implementação de código com IF-THEN-ELSIF:
DECLARE num number(8,2) := 20; BEGIN IF ( num <15 ) THEN dbms_output.put_line('The num is greater than 15' ); ELSIF ( num = 15 ) THEN dbms_output.put_line('The num is 15' ); ELSIF ( num <= 20 ) THEN dbms_output.put_line('The num is less than equal to 20'); ELSE dbms_output.put_line('The num is invalid '); END IF; dbms_output.put_line('The num is : '|| num); END; /
A saída do código acima é:
# 4) DECLARAÇÃO DE CASO: Esta declaração condicional selecionará um bloco de código entre as opções. No entanto, como as instruções IF, CASE não usa entrada booleana, mas uma expressão que ajuda a selecionar uma das opções.
A última escolha da instrução CASE é a padrão. A DECLARAÇÃO DE CASO é mais eficiente e menos extensa em comparação com as declarações IF.
Estrutura da DECLARAÇÃO DE CASO:
CASE selector WHEN 'condition 1' THEN block of code 1; WHEN 'condition2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Implementação de código com CASE STATEMENT:
DECLARE age number(5) := 15; BEGIN CASE age when '1' then dbms_output.put_line('Infant'); when '5' then dbms_output.put_line('In school'); when '15' then dbms_output.put_line('High school'); else dbms_output.put_line('Qualified for class 10 '); END CASE; END; /
A saída do código acima é:
# 5) Declaração de CASO PESQUISADO: Esta declaração condicional é desprovida de qualquer seletor e o bloco de código WHEN fornece apenas resultados booleanos e não qualquer valor de outros tipos de dados.
Estrutura da declaração de CASO PESQUISADO:
CASE WHEN 'condition 1' THEN block of code 1; WHEN 'condition 2' THEN block of code 2; WHEN 'condition 3' THEN block of code 3; ... ELSE default case END CASE;
Implementação de código com a declaração SEARCHED CASE:
DECLARE model varchar(10) := '4'; BEGIN case when model = '1' then dbms_output.put_line('FIAT'); when model = '2' then dbms_output.put_line('TOYOTA'); when model = '3' then dbms_output.put_line('MARUTI'); when model = '4' then dbms_output.put_line('HYUNDAI'); else dbms_output.put_line('Premium MODEL'); end case; END; /
A saída do código acima deve ser:
# 6) ANINHADA SE-ENTÃO-MAIS: Esta declaração condicional fornece a disposição de usar ELSE IF ou bloco IF dentro de outro IF ou ELSE IF.
Estrutura de NESTED IF-THEN-ELSE:
IF condition 1 THEN Block of code 1 IF condition 2 THEN Block of code 2 END IF; ELSE Block of code 3 when condition 1 is false END IF;
Implementação de código com NESTED IF-THEN-ELSE:
DECLARE i number(10,2) := 65; j number(5) := 10; BEGIN -- checking the condition IF( i > 50 ) THEN -- if true move to the next IF statement IF( j <15 ) THEN dbms_output.put_line('In the nested if block' ); END IF; END IF; dbms_output.put_line('The value of first number is : ' || i ); dbms_output.put_line('The value of second number is : ' || j ); END; /
A saída do código acima deve ser:
Instrução Iterativa em PL SQL
Ao implementar a lógica em PL / SQL, podemos exigir o processamento de um bloco de código repetidamente várias vezes. Isso é feito com a ajuda de instruções LOOP. Estes são de três tipos, FOR-LOOP, WHILE-LOOP e LOOP.
# 1) PL SQL LOOPS
Um LOOP tem uma estrutura básica conforme abaixo:
LOOP Block of code END LOOP;
Após cada iteração, o fluxo do programa aponta de volta para o topo do loop até que uma determinada condição seja satisfeita. No caso, queremos sair do loop por causa de uma situação, nesse caso, uma instrução EXIT pode ser usada.
# 2) PL SQL ENQUANTO LOOP
Este loop executará um bloco de código várias vezes até que a condição seja válida. No início de cada iteração, a condição do loop é verificada. Se estiver satisfeito, o bloco de código é executado.
Se a condição for nula ou não satisfeita, o loop é evitado e o próximo bloco de código é executado.
Estrutura do WHILE LOOP:
WHILE condition LOOP Block of code END LOOP;
Implementação de código com WHILE LOOP:
DECLARE num number(10,1) := 3; BEGIN WHILE num <4 LOOP dbms_output.put_line('The value of number: ' || num); num := num + 1; END LOOP; END; /
A saída do código acima deve ser:
# 3) PL SQL PARA LOOP
Este tipo de loop permite a execução de um bloco de código em um determinado número de vezes. A etapa inicial é executada uma vez. Isso é usado principalmente para inicialização e declaração das variáveis de loop. Em seguida, os valores de limite (intervalo inicial e final) são verificados. Se a condição for satisfeita, o bloco de código dentro do LOOP será executado. Caso contrário, o fluxo do programa passa para o bloco de código seguinte após o loop.
Após uma iteração, o contador de loop aumenta ou diminui em um. Todo o processo continua até que a condição do loop seja satisfeita. Quando a condição se torna FALSE, o loop termina.
No PL / SQL, o intervalo inicial e final do loop pode ser alterado no tempo de execução. O contador do loop deve ser um número inteiro, número e assim por diante (que pode ser aumentado ou diminuído numericamente). O valor inicial da variável do contador pode ser qualquer número.
Estrutura do FOR LOOP:
FOR counter IN start_value .. end_value LOOP Block of code 1 END LOOP;
Implementação de código de FOR LOOP:
DECLARE num number(10,1); BEGIN FOR num in 1.. 5 LOOP dbms_output.put_line('The num is:' || num); END LOOP; END; /
A saída do código acima deve ser:
# 4) NESTED LOOP
Este tipo de instrução permite um loop sobre o outro. A estrutura de loop externo e interno pode ser do mesmo tipo ou de tipos diferentes. Após cada travessia, ambos os loops precisam ser executados com êxito.
Estrutura do loop aninhado:
LOOP (outer) Block of code 1 LOOP (inner) Block of code 2 END LOOP; END LOOP;
Implementação de código com NESTED LOOP:
BEGIN FOR i IN 1..2 LOOP FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
A saída do código acima deve ser:
Rótulos de loop em PL / SQL
Na PL / SQL, temos a disposição de rotular os loops o que aumenta a legibilidade e o significado do código. O rótulo é representado por colchetes angulares duplos ( << e >> ) e são mencionados no início da instrução LOOP. A etiqueta também pode ser colocada no final do LOOP.
O rótulo também pode ser descrito para instruções EXIT ao sair do loop.
Estrutura de LABELS:
<> LOOP Block of Code END LOOP;
Implementação de código com LOOP LABEL:
BEGIN <> FOR i IN 1..2 LOOP <> FOR j IN 1..2 LOOP DBMS_OUTPUT.PUT_LINE('The value of i is ' || i); DBMS_OUTPUT.PUT_LINE('The value of j is ' || j); END LOOP; END LOOP; END; /
Declarações de controle de sequência
A instrução de controle é usada para modificar o fluxo de execução do programa.
# 1) SAIR
Uma instrução EXIT quebra um loop explicitamente. Quando EXIT é encontrado no loop, o loop é interrompido e o fluxo do programa passa para o próximo bloco de código. Em condições em que estamos usando loops aninhados, a instrução EXIT primeiro encerrará o loop interno e, em seguida, executará o bloco de código que aparece imediatamente após ele.
Implementação de código com EXIT:
DECLARE num number(10,1) := 15; BEGIN -- loop condition WHILE num <20 LOOP dbms_output.put_line ('The num is: ' || num); num := num + 1; IF mod(num, 2) = 0 THEN -- exit from loop EXIT; END IF; END LOOP; END; /
A saída do código acima deve ser:
# 2) CONTINUAR
Essa instrução de controle permite que o loop saia e vá para a próxima iteração a ocorrer.
Implementação de código com CONTINUE:
DECLARE num number(10,1) := 5; BEGIN -- while loop execution WHILE num <9 LOOP dbms_output.put_line ('The number is : ' || num); num := num + 1; IF mod(num,2) = 0 THEN num := num + 1; CONTINUE; END IF; END LOOP; END; /
A saída do código acima deve ser:
# 3) GOTO
A instrução GOTO move o controle para um bloco de código rotulado exclusivo incondicionalmente. Não é uma boa técnica de programação usar instruções GOTO porque reduz a legibilidade e a rastreabilidade do código.
Estrutura do GOTO:
GOTO 60; .. .. <> Block of code 1;
Implementação de codificação com a instrução GOTO:
BEGIN GOTO message_two; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Tutorial' ); GOTO message_third; <> DBMS_OUTPUT.PUT_LINE( 'Software Test Help!' ); GOTO message_one; <> DBMS_OUTPUT.PUT_LINE( 'PLSQL Control Statement' ); END;
A saída do código acima deve ser:
perguntas frequentes
P # 1) Qual é a instrução de controle em PL / SQL?
Responda: As instruções de controle em PL / SQL são de três tipos - instruções de loop, instruções sequenciais e instruções de controle. A instrução de loop consiste em WHILE LOOP, FOR LOOP e LOOP básico.
Q # 2) Como você verifica a igualdade no PL / SQL?
Responda: Em PL / SQL, temos o operador de igualdade que verifica a igualdade.
Por exemplo,
SELECT NAME FROM EMPLOYEE WHERE AGE = 50;
P # 3) Como você interrompe um loop infinito no PL / SQL?
Responda: Podemos interromper um loop infinito em PL / SQL com a ajuda de instruções EXIT. Precisamos manter as instruções EXIT dentro do loop e não fora dele.
P # 4) Qual é o propósito da estrutura de controle condicional em PL / SQL?
Responda: A estrutura de controle condicional oferece a opção de controlar o fluxo do programa dependendo de alguns critérios. Portanto, o código do programa não é executado em sequência. Um bloco de código é executado com base na condição.
P # 5) Quais são os 6 operadores relacionais?
Responda: Os operadores relacionais de PL / SQL são =,,! =, ==.
P # 6) Quais são os diferentes tipos de operadores?
Resposta: Os diferentes tipos de operadores em PL / SQL estão listados abaixo:
- Operadores bit a bit
- Operadores de atribuição
- Operadores aritméticos
- Operadores Relacionais
- Operadores lógicos
Conclusão
Cobrimos uma grande parte da PL / SQL neste tutorial lidando com tópicos como os vários operadores e sua importância com exemplos de código.
Além disso, exploramos as instruções de controle PL SQL em detalhes. As instruções de controle consistem nas estruturas do programa, como iteração, condição e sequência.
No próximo tutorial, discutiremos os procedimentos, funções, cursores do PL SQL e muitos outros tópicos relacionados.
Leitura recomendada
- Tutorial PL SQL para iniciantes com exemplos | O que é PL / SQL
- Operadores Python
- Declarações condicionais Unix: If Then Else e Operadores relacionais
- Instruções de controle Python (Python Continue, Break and Pass)
- Tutorial sobre instruções condicionais C #
- Controle de fonte ou controle de versão no DevOps (vídeo tutorial parte 2 - bloco 2)
- Loops em C #: instruções de controle e vários loops com exemplos
- Tutorial do Tortoise SVN: revisões no repositório de código