Qual a principal vantagem de usar a estrutura FOR em vez de LOOP quando sabemos o número de repetições?
Simplifica o código, pois não precisamos controlar manualmente a variável de iteração nem a condição de saída.
Na estrutura FOR, é necessário declarar a variável de iteração (ex: v_ID) explicitamente?
Não, a variável de iteração é implicitamente declarada dentro do FOR e só é visível dentro do loop.
Qual a função da linha IN 1..v_NUMCLI dentro da estrutura FOR?
Define o intervalo de valores que a variável de iteração (v_ID) irá assumir, começando em 1 e indo até o valor contido em v_NUMCLI (que, no exemplo, é o número total de clientes).
Se o valor de v_NUMCLI for 0, o que acontece com o loop FOR?
Comando:
DECLARE
v_SEGMERCADO CLIENTE.SEGMERCADO_ID%type := 3;
v_NUMCLI INTEGER;
BEGIN
SELECT COUNT(*) INTO v_NUMCLI FROM CLIENTE;
FOR v_ID IN 1..v_NUMCLI LOOP
ATUALIZAR_SEGMERCADO (v_ID,v_SEGMERCADO)
END LOOP;
END;
O loop FOR não será executado nenhuma vez, pois o intervalo 1..0 é inválido.
Após a execução do loop FOR, qual o valor da variável v_ID (a variável de iteração)?
Comando: DECLARE
v_SEGMERCADO CLIENTE.SEGMERCADO_ID%type := 3;
v_NUMCLI INTEGER;
BEGIN
SELECT COUNT(*) INTO v_NUMCLI FROM CLIENTE;
FOR v_ID IN 1..v_NUMCLI LOOP
ATUALIZAR_SEGMERCADO (v_ID,v_SEGMERCADO)
END LOOP;
END;
A variável v_ID não estará mais acessível fora do loop FOR, pois ela é declarada implicitamente e tem escopo local ao loop.
Como você escreveria um loop FOR para iterar sobre os números de 5 a 10 (inclusive) e imprimir cada número?
Como você adaptaria o exemplo da aula para atualizar o SEGMERCADO_ID dos 3 primeiros clientes para o valor 5?
Imagine que você tem uma variável v_LIMITE com o valor 7. Como você usaria um loop FOR para calcular a soma dos números de 1 até v_LIMITE?
Como você modificaria o loop FOR para percorrer os números de 10 a 1 (em ordem decrescente)?
Suponha que você queira percorrer apenas os números pares de 2 a 10 usando um loop FOR. Como você faria isso? (Dica: use um incremento diferente de 1)
O que acontece com o indexador do FOR após a execução do LOOP?
O indexador não pode ser acessado ou referenciado fora do LOOP.
Qual é o incremento padrão do indexador em um FOR loop?
O incremento do indexador é sempre unitário (1).
É possível modificar o valor do indexador dentro do LOOP?
Não, o valor do indexador só pode ser lido, não modificado.
Onde o indexador do FOR deve ser declarado?
O indexador do FOR não precisa ser declarado explicitamente na seção DECLARE.
O que acontece se tentarmos acessar o indexador fora do LOOP?
O indexador não está definido fora do LOOP, resultando em um erro se tentarmos acessá-lo.