Questão de Banco de Dados — Procedimentos armazenados (Stored Procedures) — Avança SP 2024
- Código
- qa630789
- Banca
- Avança SP
- Órgão
- CISBRA
- Ano
- 2024
- Cargo
- Ana ( )
- ATriggers
- BStore Procedures
- CTransactions
- DALTER FUNCTIONS
- ESETs
GabaritoB — Store Procedures
Gabarito: letra B. Os Stored Procedures (procedimentos armazenados) são conjuntos de comandos SQL armazenados no servidor do banco de dados, que encapsulam operações sobre os dados, escondendo a complexidade das alterações do SGBD das aplicações e permitindo acesso uniforme. Essa é a definição clássica do conceito, conforme a literatura de banco de dados.
O enunciado descreve exatamente o que é um procedimento armazenado: um bloco de código SQL que fica "guardado" no SGBD e pode ser chamado por diferentes aplicações. A ideia central é a modularidade: em vez de cada aplicação repetir a mesma lógica de acesso aos dados, ela chama um procedimento que já encapsula essa lógica. Isso traz vantagens como redução de tráfego na rede (só o nome do procedimento e os parâmetros trafegam), melhoria de desempenho, segurança (o acesso aos dados é controlado pelo procedimento) e manutenção centralizada (qualquer alteração é feita no servidor, sem precisar mudar as aplicações).
Um exemplo prático: imagine um sistema de vendas onde várias aplicações (web, mobile, desktop) precisam inserir uma venda. Em vez de cada uma repetir o comando INSERT com todas as regras de negócio (validações, cálculo de impostos, atualização de estoque), cria-se uma procedure InserirVenda que encapsula tudo. As aplicações apenas chamam CALL InserirVenda(parametros). Se a regra de negócio mudar, altera-se apenas a procedure, e todas as aplicações passam a usar a nova regra automaticamente.
A distinção importante aqui é entre procedimentos armazenados e triggers. Enquanto os procedimentos são executados explicitamente quando chamados por uma aplicação ou usuário, os triggers (gatilhos) são executados automaticamente pelo SGBD em resposta a eventos como INSERT, UPDATE ou DELETE. O enunciado fala em "encapsular conjuntos de operações" e "permitir que aplicações possam acessar o SGBD de maneira uniforme" — isso é característica de procedimentos, não de gatilhos, que são reativos e não são chamados diretamente pelas aplicações.
A pegadinha da banca está em confundir o candidato com Triggers (alternativa A), que também são procedimentos armazenados, mas com a característica de serem acionados automaticamente por eventos, e não chamados diretamente pelas aplicações. O texto do enunciado deixa claro que as aplicações "fazem o acesso ao banco por meio deles", ou seja, há uma chamada explícita — o que é típico de Stored Procedures.
Guarde a fronteira: procedimento = chamado explicitamente (via CALL ou EXEC); trigger = disparado automaticamente por um evento. É exatamente nessa distinção que as alternativas se dividem.
Triggers (gatilhos) são procedimentos armazenados no banco de dados, mas com uma diferença crucial: são acionados automaticamente pelo SGBD sempre que ocorre um evento específico (como INSERT, UPDATE ou DELETE) em uma tabela. Eles não são chamados diretamente pelas aplicações — pelo contrário, são disparados de forma reativa. O enunciado fala em "aplicações que fazem o acesso ao banco por meio deles", o que indica uma chamada explícita, característica de Stored Procedures, não de Triggers.
Stored Procedures (procedimentos armazenados) são exatamente o que o enunciado descreve: conjuntos de comandos SQL armazenados no servidor do banco de dados, que encapsulam operações sobre os dados. Eles permitem que as aplicações acessem o SGBD de maneira uniforme, chamando o procedimento em vez de repetir a lógica de acesso. Isso proporciona modularidade, redução de tráfego de rede, segurança e manutenção centralizada — todas as características citadas no texto.
Transactions (transações) são unidades lógicas de trabalho que agrupam uma ou mais operações de banco de dados (leituras e escritas) que devem ser executadas de forma atômica, garantindo as propriedades ACID (Atomicidade, Consistência, Isolamento e Durabilidade). Elas não são programação modular nem encapsulam operações para acesso uniforme das aplicações — são um mecanismo de controle de concorrência e consistência, não um recurso de programação.
ALTER FUNCTIONS não é um conceito padrão em banco de dados. O comando ALTER é usado para modificar a estrutura de objetos existentes (como tabelas, views, procedures, funções), mas "ALTER FUNCTIONS" como um conjunto de operações encapsuladas não existe. A alternativa parece uma tentativa de confundir com o comando ALTER FUNCTION, que apenas altera a definição de uma função já criada — não é um mecanismo de programação modular.
SETs não é um conceito relacionado a programação modular em banco de dados. O comando SET é usado para atribuir valores a variáveis ou configurar parâmetros de sessão no SGBD (ex.: SET @var = 10). Não encapsula operações sobre dados nem permite acesso uniforme das aplicações ao banco.
A banca explora a confusão entre Stored Procedures e Triggers. Ambos são procedimentos armazenados, mas a diferença está no acionamento: a procedure é chamada explicitamente pela aplicação (via CALL ou EXEC), enquanto o trigger é disparado automaticamente por um evento (INSERT, UPDATE, DELETE). O enunciado diz que as aplicações "fazem o acesso ao banco por meio deles" — isso indica chamada explícita, ou seja, Stored Procedure. Se você ler rápido, pode cair na alternativa A, mas a palavra-chave "acesso uniforme" e "encapsulam conjuntos de operações" aponta diretamente para procedures.
Para diferenciar na prova, pergunte-se: quem inicia a execução? Se a aplicação chama explicitamente, é Stored Procedure. Se o SGBD executa automaticamente em resposta a um evento, é Trigger. Essa é a fronteira que separa os dois conceitos — memorize-a e você não erra mais.
Gabarito: letra B
Link permanente: /questoes/qa630789