Pular para o conteúdo principal

Questão de Arquitetura de Software — Banco de Dados — ACAFE 2024

Arquitetura de SoftwareBanco de Dados
Código
qg053112
Banca
ACAFE
Órgão
CELESC
Ano
2024
Nível
Superior
Cargo
Analista de Sistemas - Infraestrutura Operação e Segurança
Um desenvolvedor está trabalhando em um banco de dados Oracle e precisa criar um procedimento armazenado em PL/SQL que insira um novo registro na tabela EMPREGADOS. O procedimento deve aceitar os parâmetros emp_id, emp_nome e emp_salario e realizar a inserção. Qual das alternativas abaixo mostra CORRETAMENTE como esse procedimento pode ser escrito?
  1. ACREATE PROCEDURE add_empregados(emp_id NUMBER, emp_nome VARCHAR2, emp_salario NUMBER)ASBEGININSERT INTO EMPREGADOS (emp_id, emp_nome, emp_salario);END;
  2. BCREATE PROCEDURE add_empregados(emp_id NUMBER, emp_nome VARCHAR2, emp_salario NUMBER)ISBEGININSERT INTO EMPREGADOS (ID, NOME, SALARIO) VALUES (emp_id, emp_nome, emp_salario);END;
  3. CCREATE PROCEDURE add_empregados(emp_id NUMBER, emp_nome VARCHAR2, emp_salario NUMBER)BEGININSERT INTO EMPREGADOS (ID, NOME, SALARIO) VALUES (emp_id, emp_nome, emp_salario);END add_empregados;
  4. DCREATE PROCEDURE add_empregados(emp_id IN NUMBER, emp_nome IN VARCHAR2, emp_salario IN NUMBER)INBEGININSERT INTO EMPREGADOS (ID, NOME, SALARIO) VALUES (emp_id, emp_nome, emp_salario);END;
  5. ECREATE PROCEDURE add_empregados(emp_id IN NUMBER, emp_nome IN VARCHAR2, emp_salario IN NUMBER)ASBEGININSERT INTO EMPREGADOS (ID, NOME, SALARIO) VALUES (emp_id, emp_nome, emp_salario);END;
Revelar gabarito e comentário

GabaritoE — CREATE PROCEDURE add_empregados(emp_id IN NUMBER, emp_nome IN VARCHAR2, emp_salario IN NUMBER) AS BEGIN INSERT INTO EMPREGADOS (ID, NOME, SALARIO) VALUES (emp_id, emp_nome, emp_salario); END;

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

Criação de Procedimento Armazenado em PL/SQL

Gabarito: letra E. A sintaxe correta de um procedimento em PL/SQL Oracle exige, após a lista de parâmetros, a palavra IS ou AS, e os parâmetros podem ter o modo IN, OUT ou IN OUT, sendo IN o padrão. A alternativa E apresenta corretamente a estrutura: CREATE PROCEDURE add_empregados(emp_id IN NUMBER, emp_nome IN VARCHAR2, emp_salario IN NUMBER) AS BEGIN ... END;. As demais alternativas contêm erros como omissão de IS/AS, uso indevido de IN no lugar de IS/AS, falta de VALUES ou a não declaração do modo dos parâmetros.

  1. 1CREATE PROCEDURE nome
  2. 2(param IN tipo)
  3. 3IS / AS
  4. 4BEGIN ... END;
LEVEL · soulevel.com.br

Análise das Alternativas

Alternativa A — ❌ Incorreta

A instrução INSERT está incompleta: faltam a cláusula VALUES e os valores a serem inseridos. Além disso, os nomes das colunas estão como (emp_id, emp_nome, emp_salario), mas a tabela EMPREGADOS possui colunas ID, NOME, SALARIO (conforme as demais alternativas). A sintaxe correta seria INSERT INTO EMPREGADOS (ID, NOME, SALARIO) VALUES (emp_id, emp_nome, emp_salario);.

Alternativa B — ❌ Incorreta

Embora a estrutura IS e o INSERT estejam sintaticamente corretos, a banca considerou que os parâmetros devem ter o modo IN explicitado. A declaração emp_id NUMBER não especifica o modo; a forma mais completa e adotada como padrão pela banca é emp_id IN NUMBER. Assim, a alternativa omitiu o modo IN, o que é considerado um erro.

Alternativa C — ❌ Incorreta

Falta a palavra IS ou AS entre a lista de parâmetros e o bloco BEGIN. A sintaxe exige uma dessas palavras para separar a assinatura do corpo do procedimento. A presença imediata de BEGIN é inválida.

Alternativa D — ❌ Incorreta

Após os parâmetros, aparece IN no lugar de IS ou AS. A palavra IN se refere ao modo do parâmetro, não pode substituir o separador obrigatório entre a assinatura e o corpo. O correto seria AS ou IS.

Alternativa E — ✅ Correta ⟵ GABARITO

Segue exatamente a sintaxe padrão do PL/SQL: CREATE PROCEDURE nome(parametros IN tipo) AS BEGIN ... END;. Os parâmetros têm modo IN explícito, utiliza AS, o comando INSERT está correto com VALUES e o bloco é fechado com END;. Essa construção é plenamente funcional no Oracle.

Gabarito: letra E

Link permanente: /questoes/qg053112