Questão de Banco de Dados — SQL Server — Quadrix 2025
- Código
- qg596697
- Banca
- Quadrix
- Órgão
- CRC-SP
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Desenvolvimento
- CCerto
- EErrado
GabaritoC — Certo
Gabarito: letra C (CERTO). A afirmação está correta: no SQL Server, as UDFs (User-Defined Functions) são de fato úteis para cálculos repetitivos e encapsulamento de lógica, mas não podem modificar dados — elas são projetadas para serem somente leitura, retornando um valor escalar ou uma tabela, sem executar operações de INSERT, UPDATE ou DELETE. Essa restrição é uma característica fundamental das UDFs no SQL Server, que as diferencia de stored procedures.
As UDFs são objetos de banco de dados que encapsulam lógica reutilizável, permitindo que o desenvolvedor escreva uma função uma vez e a utilize em diversas consultas, cálculos e validações. Elas são particularmente úteis para padronizar regras de negócio, como cálculos de impostos, formatação de dados ou transformações complexas, garantindo consistência e reduzindo a duplicação de código. No SQL Server, existem três tipos principais de UDFs: funções escalares (retornam um único valor), funções com valor de tabela inline (retornam uma tabela, definida por uma única instrução SELECT) e funções com valor de tabela multi-instrução (retornam uma tabela, mas podem conter múltiplas instruções).
A principal limitação das UDFs no SQL Server é que elas não podem modificar o estado do banco de dados. Isso significa que, dentro de uma UDF, não é permitido executar comandos DML (Data Manipulation Language) como INSERT, UPDATE ou DELETE, nem comandos DDL (Data Definition Language) como CREATE, ALTER ou DROP. Essa restrição existe para garantir que as UDFs sejam previsíveis e não causem efeitos colaterais, o que é essencial para que possam ser usadas em consultas, em colunas computadas e em constraints CHECK, onde o otimizador de consultas precisa assumir que a função é determinística e não altera dados. Essa característica é o que torna a afirmação da questão correta.
Para entender melhor a diferença, é importante comparar as UDFs com as stored procedures. Enquanto as UDFs são limitadas a operações de leitura, as stored procedures podem executar qualquer tipo de operação, incluindo modificação de dados, controle de transações e até mesmo chamadas a outras procedures. Essa distinção é crucial para decidir qual objeto usar em cada situação: se a necessidade é apenas calcular ou transformar dados, uma UDF é adequada; se a necessidade envolve alterar dados, uma stored procedure é a escolha certa. A banca explora exatamente essa fronteira, e o candidato que confunde os dois conceitos tende a marcar a alternativa errada.
A pegadinha desta questão está em associar a utilidade das UDFs para cálculos repetitivos com a capacidade de modificar dados. O candidato pode pensar que, por serem úteis, elas também podem alterar dados, mas a restrição de somente leitura é uma regra rígida do SQL Server. Portanto, a afirmação está correta, e o gabarito é a letra C.
A afirmação está correta. As UDFs no SQL Server são projetadas para encapsular lógica de cálculo e retornar valores, mas não podem modificar dados. Essa é uma restrição fundamental: dentro de uma UDF, não é permitido executar comandos DML (INSERT, UPDATE, DELETE) ou DDL (CREATE, ALTER, DROP). Essa limitação garante que as UDFs sejam previsíveis e possam ser usadas em consultas, colunas computadas e constraints CHECK, sem causar efeitos colaterais. A utilidade para cálculos repetitivos é uma das principais finalidades das UDFs, mas a impossibilidade de modificar dados é uma característica que as distingue das stored procedures.
Gabarito: letra C
Link permanente: /questoes/qg596697