Pular para o conteúdo principal

Questão de Banco de Dados — PL-SQL — FGV 2026

Banco de DadosPL-SQL
Código
fg127359
Banca
FGV
Órgão
AL-RO
Ano
2026
Nível
Superior
Cargo
Analista Legislativo (Tecnologia da Informação - Banco de Dados)
Um programador de Stored Procedures em um SGBD procedeu à refatoração de um código, utilizando uma variável local dentro de uma função aninhada que tem o mesmo nome de uma variável global.Sobre a aplicação das regras de escopo de variáveis em linguagens procedurais, assinale a afirmativa correta.
  1. AEm linguagens que adotam o escopo dinâmico, a variável local sempre prevalece sobre a global, independentemente de onde a função foi definida.
  2. BO escopo estático (ou léxico) determina que o identificador de uma variável seja resolvido com base em onde a função foi definida no código-fonte, e não de onde ela foi chamada.
  3. CO escopo é irrelevante em linguagens estaticamente tipadas, pois a resolução de nomes de variáveis ocorre exclusivamente em tempo de execução.
  4. DUma variável declarada dentro de um bloco só é acessível fora daquele bloco se for declarada como static.
  5. EEm linguagens procedurais modernas, o escopo global é sempre preferível ao escopo local para simplificar a manutenção e evitar efeitos colaterais.
Revelar gabarito e comentário

GabaritoB — O escopo estático (ou léxico) determina que o identificador de uma variável seja resolvido com base em onde a função foi definida no código-fonte, e não de onde ela foi chamada.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Escopo de variáveis em linguagens procedurais

Gabarito: letra B. Em linguagens com escopo estático (ou léxico), a resolução de um identificador depende da estrutura do código onde a função foi definida, e não da cadeia de chamadas em tempo de execução. A alternativa B descreve exatamente esse conceito.

A questão testa o entendimento das regras de escopo — um tópico central para programação de stored procedures em SGBDs como Oracle (PL/SQL). É comum que programadores utilizem variáveis locais que ocultam variáveis globais de mesmo nome, e o comportamento depende do tipo de escopo adotado pela linguagem.

Alternativa

Afirmativa

Correta?

Justificativa

A

Em linguagens que adotam o escopo dinâmico, a variável local sempre prevalece sobre a global, independentemente de onde a função foi definida.

❌ Incorreta

O escopo dinâmico resolve nomes com base na cadeia de chamadas em tempo de execução, não sendo "independentemente de onde a função foi definida". A redação é enganosa ao afirmar "sempre prevalece" de forma absoluta.

B

O escopo estático (ou léxico) determina que o identificador de uma variável seja resolvido com base em onde a função foi definida no código-fonte, e não de onde ela foi chamada.

✅ Correta

Correta por definição. O escopo estático estabelece que a resolução depende da estrutura do código-fonte, independentemente da cadeia de chamadas. É a abordagem usada em PL/SQL, Java, C, entre outras.

C

O escopo é irrelevante em linguagens estaticamente tipadas, pois a resolução de nomes de variáveis ocorre exclusivamente em tempo de execução.

❌ Incorreta

É o oposto: linguagens estaticamente tipadas realizam a verificação de escopo e tipos em tempo de compilação, e a resolução de nomes é definida pelo escopo léxico, não ocorrendo apenas em execução.

D

Uma variável declarada dentro de um bloco só é acessível fora daquele bloco se for declarada como static.

❌ Incorreta

Em PL/SQL e na maioria das linguagens procedurais, uma variável declarada dentro de um bloco é acessível somente dentro daquele bloco. A declaração static (em linguagens como C) altera o tempo de vida, mas não torna a variável acessível fora do bloco.

E

Em linguagens procedurais modernas, o escopo global é sempre preferível ao escopo local para simplificar a manutenção e evitar efeitos colaterais.

❌ Incorreta

O escopo global é geralmente desencorajado por aumentar efeitos colaterais e dificultar a manutenção. O escopo local é preferível para encapsulamento e redução de dependências.

1Estático (léxico)
Resolve pelo local da definição
PL/SQL, Java, C
2Dinâmico
Resolve pela cadeia de chamadas
Menos comum
3Global vs. local
Local oculta global
Local só acessível no bloco
Escopo de variáveis
LEVELsoulevel.com.br
Escopo de variáveis: Estático (léxico) (Resolve pelo local da definição, PL/SQL, Java, C); Dinâmico (Resolve pela cadeia de chamadas, Menos comum); Global vs. local (Local oculta global, Local só acessível no bloco)

Alternativa A — ❌ Incorreta

A afirmação sobre escopo dinâmico está incorreta. Em escopo dinâmico, a variável local prevalece sobre a global durante a execução da função, mas isso depende do contexto de chamada (a cadeia de ativação), não sendo "independentemente de onde a função foi definida". Na verdade, o escopo dinâmico resolve nomes com base na sequência de chamadas em tempo de execução, e não na definição. A redação da alternativa é enganosa ao afirmar "sempre prevalece" de forma absoluta; embora na prática a variável local da função mais interna seja acessada, o princípio não é tão simplista.

Alternativa B — ✅ Correta ⟵ GABARITO

Correta por definição. O escopo estático (ou léxico) estabelece que um identificador é resolvido observando a estrutura do código-fonte: a variável referenciada é aquela declarada no bloco que envolve a definição da função, independentemente de onde a função é chamada. Essa é a abordagem usada em PL/SQL, Java, C, entre outras linguagens.

Alternativa C — ❌ Incorreta

Afirma que o escopo é irrelevante em linguagens estaticamente tipadas e que a resolução de nomes ocorre exclusivamente em tempo de execução. É o oposto: linguagens estaticamente tipadas realizam a verificação de escopo (e tipos) em tempo de compilação, e a resolução de nomes é definida pelo escopo léxico, não ocorrendo apenas em execução.

Alternativa D — ❌ Incorreta

Em PL/SQL e na maioria das linguagens procedurais, uma variável declarada dentro de um bloco é acessível somente dentro daquele bloco. A declaração static (em linguagens como C) altera o tempo de vida da variável, mas não a torna acessível fora do bloco. A afirmação de que seria necessária a palavra static para acesso externo é falsa.

Alternativa E — ❌ Incorreta

O uso excessivo de variáveis globais dificulta a manutenção e aumenta os efeitos colaterais. Boas práticas recomendam escopo local sempre que possível, para encapsulamento e redução de acoplamento. Logo, a afirmativa inverte a recomendação.


Gabarito: letra B

Link permanente: /questoes/fg127359