O que as linhas v_SEGMERCADO CLIENTE.SEGMERCADO_ID%type := 2; e v_ID CLIENTE.ID%type := 1; fazem?
Elas declaram duas variáveis. v_SEGMERCADO armazena o novo ID do segmento de mercado (inicializado com 2) e v_ID armazena o ID do cliente (inicializado com 1). O tipo de dado é o mesmo da coluna correspondente na tabela CLIENTE.
Qual o propósito da linha v_ID := v_ID + 1;?
Ela incrementa o valor da variável v_ID em 1. Isso é crucial para que, na próxima iteração, a procedure ATUALIZAR_SEGMERCADO seja executada para o próximo cliente na tabela.
Qual é a principal desvantagem deste código e como podemos melhorá-lo?
A principal desvantagem é a repetição excessiva das linhas ATUALIZAR_SEGMERCADO e v_ID := v_ID + 1. Para melhorar, podemos usar um LOOP para automatizar a repetição dessas linhas, tornando o código mais conciso e fácil de manter.
O que é um LOOP em PL/SQL e qual a sua finalidade?
Um LOOP é uma estrutura de controle que permite repetir um bloco de código várias vezes. Ele é usado para executar uma série de comandos até que uma condição de saída seja atendida.
Quais são os componentes básicos de um LOOP simples em PL/SQL?
Os componentes básicos são:
LOOP: Marca o início do bloco de código a ser repetido.
EXIT WHEN condição: Define a condição de saída do loop. Quando a condição é verdadeira, o loop é interrompido.
END LOOP: Marca o fim do bloco de código a ser repetido.
Como você define uma condição de saída em um LOOP?
Utiliza-se o comando EXIT WHEN seguido de uma condição lógica. Por exemplo:
EXIT WHEN v_ID > 9;
Neste caso, o loop será interrompido quando o valor de v_ID for maior que 9.
Qual a importância de usar LOOP em PL/SQL?
O LOOP ajuda a reduzir a repetição de código, tornando o programa mais simples, legível e fácil de manter. Ele permite executar a mesma operação em vários registros ou até que uma condição específica seja alcançada.
O que faz o bloco LOOP … END LOOP;?
Este bloco define um loop que será executado repetidamente até que a condição de saída seja atendida. Dentro do loop, o código atualiza o segmento de mercado do cliente e incrementa o ID para o próximo cliente.
O que faz a linha v_ID := v_ID + 1;?
Essa linha incrementa o valor da variável v_ID em 1. Isso garante que, na próxima iteração do loop, o próximo cliente na sequência seja atualizado.
O que faz a linha EXIT WHEN v_ID > 9;?
Essa linha define a condição de saída do loop. O loop continuará a ser executado até que o valor de v_ID seja maior que 9. Quando v_ID for maior que 9, o loop será interrompido e a execução do programa continuará após o END LOOP.
Qual o resultado final deste bloco de código?
Este bloco de código atualiza o segmento de mercado dos clientes com IDs de 3 a 9 para o valor 2. Ele itera sobre os clientes, atualizando seus registros até que o ID seja maior que 9, momento em que o loop é interrompido.
Note que o campo VALOR_TOTAL, que deveria ser a QUANTIDADE x PRECO, não está calculado corretamente, bem como o PERCENTUAL_IMPOSTO, que está vazio. Relembrando que o PERCENTUAL_IMPOSTO é obtido da função RETORNA_IMPOSTO.
Faça uma procedure que percorra, de forma sequencial, o valor do identificador da venda (ID) e atualize, na tabela PRODUTO_VENDA_EXERCICIO, as colunas VALOR_TOTAL e PERCENTUAL_IMPOSTO.
Qual a principal diferença entre LOOP e FOR em PL/SQL?
LOOP é usado quando a condição de saída é indeterminada. FOR é usado quando o número de repetições é conhecido.
Como se declara a estrutura FOR em PL/SQL?
FOR variável IN valor_inicial..valor_final LOOP
Qual a vantagem de usar FOR em vez de LOOP quando se conhece o número de repetições?
FOR é mais simples e eficiente para percorrer um número finito de vezes.
Qual o objetivo do FOR v_ID IN 1..v_NUMCLI LOOP?
Inicia um loop que itera de 1 até o valor armazenado em v_NUMCLI, usando v_ID como contador.
Por que a variável v_ID não é declarada explicitamente na seção DECLARE?
Porque quando v_ID é usada dentro do FOR, não é preciso declará-la.
O que faz a declaração v_NUMCLI INTEGER;?
Declara uma variável chamada v_NUMCLI do tipo inteiro, que será utilizada para armazenar a quantidade de clientes.
Explique o loop FOR v_ID IN 1..v_NUMCLI LOOP … END LOOP;
Este loop itera sobre todos os IDs de clientes, de 1 até o número total de clientes (v_NUMCLI). Em cada iteração, a variável v_ID assume o valor do ID do cliente atual.
Qual é a forma de se indicar o parâmetro nomeado?
X=>
Qual a função do comando EXIT dentro de um loop LOOP-END LOOP em PL/SQL?
Permite sair do loop antes que a condição de repetição seja normalmente atingida.
Como usar EXIT WHEN para sair de um loop?
EXIT WHEN condição; (o loop é interrompido quando a condição se torna verdadeira).
Qual a vantagem de usar EXIT dentro de um loop?
Oferece flexibilidade no controle do fluxo de execução, permitindo sair do loop sob condições específicas.
Qual o efeito do comando EXIT; dentro do bloco ELSE?
Encerra o loop LOOP imediatamente quando a condição v_ID <= 9 é falsa.