Considere o trecho de código abaixo.SQL> DECLARE 2 total NUMBER; 3 horas_trab NUMBER := 40; 4 valor_hora NUMBER := 52.50; 5 bonus NUMBER := 1500.00; 6 nome VARCHAR2(128); 7 id_ok BOOLEAN; 8 9 BEGIN 10 total := (horas_trab * valor_hora) + bonus; 11 nome := 'Antonia Santos'; 12 id_ok := TRUE; 13 END; 14 / O código
Aescrito em PL/SQL não executará no Oracle 11g, pois a inicialização das variáveis está errada.
Btraz tipos de dados totalmente compatíveis com a linguagem SQL.
Cescrito para o SGBD PostgreSQL, executará sem erros, pois não apresenta erros de sintaxe.
Descrito em PL/SQL executará no SGBD Oracle 11g e não apresenta erros de sintaxe.
Etraz erros na declaração de variáveis com parte fracionária, pois deveria ser NUMBER (4,2).
Revelar gabarito e comentário▾
GabaritoD — escrito em PL/SQL executará no SGBD Oracle 11g e não apresenta erros de sintaxe.
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: Bloco Anônimo e Sintaxe
Gabarito: letra D. O código apresentado é um bloco PL/SQL perfeitamente válido para Oracle 11g. A declaração e inicialização de variáveis na seção DECLARE é permitida, e os tipos utilizados (NUMBER, VARCHAR2, BOOLEAN) são suportados em PL/SQL. Não há erros de sintaxe, e o bloco executaria normalmente.
A banca testa o conhecimento básico de sintaxe PL/SQL e a diferença entre os tipos SQL e PL/SQL. A pegadinha principal é que alguns candidatos podem achar que a inicialização simultânea à declaração é inválida, ou que o tipo BOOLEAN (que não existe no SQL puro) causaria erro, mas ambos são perfeitamente válidos em PL/SQL.
Alternativa A — ❌ Incorreta
Afirma que o código não executará no Oracle 11g porque a inicialização das variáveis está errada. Na verdade, a inicialização na seção DECLARE é uma característica padrão do PL/SQL. O código é sintaticamente correto.
Alternativa B — ❌ Incorreta
Diz que os tipos de dados são totalmente compatíveis com a linguagem SQL. O tipo BOOLEAN é exclusivo do PL/SQL e não existe no SQL padrão. Portanto, a afirmação é falsa.
Alternativa C — ❌ Incorreta
Alega que o código foi escrito para PostgreSQL e executará sem erros. Embora a sintaxe do PL/pgSQL seja semelhante, há diferenças: o uso de NUMBER (Oracle) em vez de NUMERIC ou DECIMAL, e detalhes de implementação. O bloco é tipicamente Oracle, mas mesmo que houvesse similaridade, não é garantido que executaria sem adaptações. A alternativa é, portanto, incorreta.
Alternativa D — ✅ Correta ⟵ GABARITO
O código é um bloco PL/SQL válido para Oracle 11g, sem erros de sintaxe. A declaração e inicialização estão corretas, e todos os tipos utilizados são suportados em PL/SQL.
Alternativa E — ❌ Incorreta
Sugere que há erro na declaração de variáveis com parte fracionária, que deveriam ser declaradas como NUMBER(4,2). Entretanto, o tipo NUMBER sem precisão e escala é perfeitamente capaz de armazenar valores com parte decimal. A declaração está correta.
PEGA ESSA DICA!
Em PL/SQL, a seção DECLARE pode conter inicializações com :=. O tipo BOOLEAN é aceito apenas em PL/SQL, não em SQL. Já o tipo NUMBER, sem especificação de precisão, é flexível e suporta decimais.