← Questões de Banco de Dados

Banco de Dados · CONSULPLAN · 2025

Questão comentada de Banco de Dados

Um analista de sistemas da Prefeitura Municipal de Nova Iguaçu precisa gerar um relatório de arrecadação fiscal. Para isso, ele escreve a seguinte consulta em PL/SQL para calcular o total de impostos pagos pelos contribuintes: DECLARE v_total NUMBER; BEGIN SELECT SUM(valor) INTO v_total FROM pagamentos WHERE categoria = 'IMPOSTO'; DBMS_OUTPUT.PUT_LINE('Total de impostos arrecadados: ' || v_total); END; Ao revisar o código, foram identificados erros conceituais que podem comprometer sua execução. Qual das alternativas contém uma afirmação INCORRETA sobre o código PL/SQL apresentado?

Gabarito: C

Em PL/SQL, um bloco anônimo segue uma estrutura bem clássica: parte declarativa, BEGIN, comandos executáveis e END. Por isso, variáveis como v_total precisam mesmo ser declaradas antes do BEGIN, já que é na área declarativa que você prepara tudo o que o bloco vai usar. No trecho mostrado, o SELECT ... INTO é usado para trazer um resultado da consulta para uma variável. Isso funciona muito bem quando a expressão retorna um único valor, como no caso de SUM(valor), porque a soma sempre produz um único resultado agregado. Se a consulta comum retornasse mais de uma linha, aí sim haveria erro, pois SELECT INTO espera exatamente uma linha de retorno. Outro ponto importante é o DBMS_OUTPUT.PUT_LINE, que só mostra a mensagem se a saída do servidor estiver ativada. Em ambientes de teste e em muitas bancas, isso costuma exigir o famoso SET SERVEROUTPUT ON, senão a mensagem fica tímida e não aparece. É o tipo de detalhe que a prova adora cobrar porque parece pequeno, mas derruba quem lê rápido. O gabarito é a alternativa C porque ela erra o conceito de agregação: a variável v_total não armazena qualquer quantidade de valores, e sim um único valor resultante do SUM(). Em outras palavras, o SUM consolida vários registros em um único número, então cabe perfeitamente em uma variável NUMBER.

Continue treinando

Questões relacionadas