Questão de Arquitetura de Software — Banco de Dados — ACAFE 2024
Arquitetura de Software›Banco 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?
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;
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.
1CREATE PROCEDURE nome
2(param IN tipo)
3IS / AS
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.