Pular para o conteúdo principal

Questão de Banco de Dados — PL/SQL e Outras Extensões SQL — VUNESP 2024

Banco de DadosPL/SQL e Outras Extensões SQL
Código
vu212066
Banca
VUNESP
Órgão
APS
Ano
2024
Cargo
Esp Port ( )
Em um código do PL/SQL do Oracle 21c é possível declarar um comando, que não executa qualquer ação, simplesmente passando o controle para o próximo comando da sequência. Tal comando é:
  1. ANOP
  2. BZERO
  3. CNULL
  4. DFETCH
  5. ENLS
Revelar gabarito e comentário

GabaritoC — NULL

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”.

PL/SQL: o comando NULL como instrução nula

Gabarito: letra C. Em PL/SQL, o comando NULL é uma instrução executável que não realiza nenhuma ação, servindo apenas para passar o controle ao próximo comando — é o equivalente ao "no-op" (no operation) de outras linguagens. As demais alternativas não são comandos válidos do PL/SQL com essa finalidade.

O PL/SQL (Procedural Language/Structured Query Language) é a extensão procedural da Oracle para o SQL. Diferentemente do SQL, que é declarativo, o PL/SQL permite controle de fluxo, declaração de variáveis, loops, condicionais e tratamento de exceções. Dentro da seção executável de um bloco PL/SQL (delimitada por BEGIN e END), cada instrução é executada sequencialmente. O comando NULL é uma instrução válida nessa seção, mas que não produz efeito algum: não altera dados, não chama funções, não modifica o estado do programa. Ele é útil em situações em que a sintaxe exige uma instrução, mas nenhuma ação é desejada — por exemplo, em um ramo de um IF ou em um WHEN de uma estrutura CASE que não deve fazer nada.

A utilidade prática do NULL aparece em estruturas condicionais. Imagine um bloco que verifica uma condição e, se verdadeira, executa uma ação; se falsa, não deve fazer nada. Em PL/SQL, você não pode simplesmente deixar o ramo ELSE vazio — a sintaxe exige pelo menos uma instrução. Nesse caso, escreve-se NULL; para indicar explicitamente "nenhuma operação". O mesmo vale para um WHEN em um CASE que não deve ter ação. O comando NULL também é usado para criar um "placeholder" durante o desenvolvimento, permitindo que o código compile antes de a lógica ser implementada.

É importante não confundir o comando NULL com o valor nulo (NULL como ausência de valor em SQL). No contexto de PL/SQL, NULL; é uma instrução (statement), enquanto NULL como valor é usado em expressões e comparações. A distinção é sutil, mas essencial: a instrução NULL; é um comando executável que não faz nada; o valor NULL é um dado que representa desconhecido ou ausente.

A banca explora aqui o conhecimento específico da sintaxe do PL/SQL. As alternativas incorretas são termos que existem em outros contextos — NOP é uma instrução de assembly, FETCH é um comando de cursor, NLS é um parâmetro de nacionalidade — mas nenhum deles é um comando PL/SQL que "não executa qualquer ação". O candidato que não conhece o comando NULL pode ser tentado a escolher NOP, por ser o termo clássico de "no operation" em linguagens de baixo nível, mas o PL/SQL usa NULL para essa finalidade.

Guarde a regra: em PL/SQL, a instrução que não faz nada é NULL;. É exatamente esse conhecimento que separa a alternativa correta das demais.

Comando que não executa ação (PL/SQL)
  • 1NULL
    • Passa o controle ao próximo comando
    • Usado em ramos vazios de IF/CASE
    • Placeholder em desenvolvimento
  • 2Distratores
    • NOP (assembly, não é PL/SQL)
    • FETCH (recupera dados de cursor)
    • NLS (parâmetro de nacionalidade)
    • ZERO (não é comando)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

NOP é uma instrução de assembly (e de algumas outras linguagens de baixo nível) que significa "no operation" — não executa nada e passa ao próximo comando. No entanto, não é um comando do PL/SQL. O PL/SQL não possui uma instrução chamada NOP; a função de "não fazer nada" é cumprida pelo comando NULL. A banca coloca NOP como distrator justamente por ser o termo conhecido de "no-op" em outras linguagens, tentando o candidato que não domina a sintaxe específica do PL/SQL.

Alternativa B — ❌ Incorreta

ZERO não é um comando do PL/SQL nem de qualquer linguagem de banco de dados. Não existe instrução ZERO em PL/SQL. O número zero é um valor numérico, não uma instrução. A alternativa é um distrator puro, sem correspondência com a sintaxe do PL/SQL.

Alternativa C — ✅ Correta ⟵ GABARITO

O comando NULL em PL/SQL é uma instrução executável que não realiza nenhuma ação. Ele é usado para passar o controle ao próximo comando, atendendo exatamente à descrição do enunciado: "não executa qualquer ação, simplesmente passando o controle para o próximo comando da sequência". É um recurso válido na seção executável de um bloco PL/SQL, frequentemente empregado em ramos de IF ou CASE que não devem ter ação, ou como placeholder durante o desenvolvimento.

Alternativa D — ❌ Incorreta

FETCH é um comando do PL/SQL, mas sua função é recuperar dados de um cursor — ou seja, ele executa uma ação (buscar uma linha do resultado de uma consulta). Não se trata de um comando que "não executa qualquer ação". O FETCH é usado em conjunto com OPEN e CLOSE para percorrer as linhas retornadas por um cursor explícito. Portanto, está incorreto por executar uma operação real.

Alternativa E — ❌ Incorreta

NLS (National Language Support) é um conjunto de parâmetros do Oracle que controla o idioma, o formato de data, a ordenação e outras convenções locais. Não é um comando do PL/SQL, mas sim uma configuração do ambiente do banco. Não tem relação com a execução de instruções dentro de um bloco PL/SQL.

NÃO CAIA NESSA!

A banca aposta no candidato que conhece NOP de outras linguagens (assembly, por exemplo) e o escolhe por ser o termo clássico de "no operation". Mas o PL/SQL não usa NOP — usa NULL; para essa finalidade. Lembre-se: em PL/SQL, a instrução que não faz nada é NULL, não NOP.

PEGA ESSA DICA!

Para fixar, associe: NULL; em PL/SQL é o "no-op" — uma instrução que não faz nada, mas é necessária para preencher espaços vazios em estruturas de controle. Compare com outras linguagens: em Python, usa-se pass; em C, usa-se ; (ponto e vírgula vazio); em PL/SQL, usa-se NULL;. Essa comparação ajuda a memorizar.

Gabarito: letra C

Link permanente: /questoes/vu212066