Questão de Banco de Dados — SQL — Quadrix 2025
- Código
- qg597697
- Banca
- Quadrix
- Órgão
- CREMESE
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Sistemas
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: CERTO. A afirmação está correta: funções são semelhantes a stored procedures, mas a principal diferença é que funções retornam um valor e podem ser usadas diretamente em instruções SQL, como em um SELECT. Essa é uma distinção fundamental entre os dois objetos de banco de dados.
Para entender bem essa questão, é preciso dominar o que são stored procedures e funções em um SGBD. Uma stored procedure é um bloco de código SQL pré-compilado e armazenado no banco de dados, que pode receber parâmetros e executar uma série de operações, como inserir, atualizar, deletar ou consultar dados. Ela pode retornar zero, um ou vários valores, mas não é obrigada a retornar um valor específico — e, em geral, não é usada diretamente dentro de uma instrução SELECT.
Já uma função (ou user-defined function) é um objeto que, como o nome sugere, sempre retorna um valor (um escalar, uma tabela, etc.) e pode ser invocada diretamente em expressões SQL, como em SELECT nome_funcao(coluna) FROM tabela. Essa capacidade de ser usada em consultas é o que a torna tão útil para cálculos e transformações de dados no momento da consulta.
A confusão entre os dois conceitos é comum, mas a distinção é clara e bem definida na maioria dos SGBDs relacionais, como SQL Server, PostgreSQL e Oracle. A banca explora exatamente essa diferença: a capacidade de ser usado em SELECT é uma característica marcante das funções, não das procedures.
Na prática, imagine que você precise calcular o imposto sobre um valor de venda. Você poderia criar uma função calcular_imposto(valor) que retorna o valor do imposto. Essa função pode ser usada diretamente em uma consulta: SELECT nome, calcular_imposto(preco) FROM produtos;. Uma stored procedure, por outro lado, seria mais adequada para uma operação que não precisa retornar um valor para ser usada em uma consulta, como um processo de atualização em massa.
A pegadinha desta questão é justamente a inversão dos papéis: se a banca dissesse que stored procedures podem ser usadas diretamente em SELECT, estaria errado. A regra de ouro é: funções retornam valores e são usadas em expressões SQL; procedures executam ações e não são usadas diretamente em SELECT.
A afirmação "Functions são semelhantes a stored procedures, mas retornam valores e podem ser usadas diretamente em instruções SQL, como SELECT" está correta. Ela captura com precisão as duas principais diferenças entre funções e stored procedures: o retorno de valor e a possibilidade de uso direto em consultas SQL. As funções são, de fato, projetadas para retornar um valor e podem ser incorporadas em expressões, enquanto as stored procedures são mais voltadas para a execução de ações e não são tipicamente usadas em cláusulas SELECT.
Para fixar, lembre-se da frase: "Função retorna, procedure executa". Se a questão falar em usar o objeto diretamente em um SELECT, a resposta quase sempre será função. Se falar em executar uma sequência de comandos, será procedure. Essa distinção é um clássico em provas de banco de dados.
Gabarito: CERTO
Link permanente: /questoes/qg597697