Analista Legislativo (Tecnologia da Informação - Banco de Dados)
Um DBA precisa criar uma função para ser usada em uma consulta SQL que retorna o nome completo de um funcionário a partir de seu ID. Para otimizar a consulta e permitir que o SGBD armazene em cache os resultados da função, ele deve declará-la como determinística.Assinale a opção que define uma Função Determinística em um SGBD.
AUma função que não pode ser executada em paralelo e só pode ser chamada por Stored Procedures.
BUma função que sempre retorna o mesmo resultado quando chamada com o mesmo conjunto de valores de entrada, independentemente do estado do banco de dados no momento da execução.
CUma função que realiza operações de I/O, sendo forçada a ser recalculada a cada chamada mesmo considerando o mesmo conjunto de valores de entrada.
DUma função que utiliza valores aleatórios ou o relógio do sistema, impedindo o caching dos resultados tendo por base valores de entrada diferentes.
EUma função que possui lógica de COMMIT e ROLLBACK embutida.
Revelar gabarito e comentário▾
GabaritoB — Uma função que sempre retorna o mesmo resultado quando chamada com o mesmo conjunto de valores de entrada, independentemente do estado do banco de dados no momento da execução.
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”.
Funções Determinísticas em SQL
Gabarito: letra B. Uma função determinística é aquela que, para um mesmo conjunto de parâmetros de entrada, sempre produz o mesmo resultado, independentemente do estado do banco de dados ou de fatores externos. Essa característica permite que o SGBD armazene em cache o resultado da função, otimizando consultas repetitivas.
Análise das alternativas
Característica
Função Determinística (Gabarito B)
Alternativa A
Alternativa C
Alternativa D
Alternativa E
Definição central
Sempre retorna o mesmo resultado para os mesmos parâmetros de entrada, independentemente do estado do banco de dados.
Não pode ser executada em paralelo e só pode ser chamada por Stored Procedures.
Realiza operações de I/O, sendo recalculada a cada chamada.
Utiliza valores aleatórios ou relógio do sistema.
Possui lógica de COMMIT e ROLLBACK embutida.
Comportamento com mesmos parâmetros
Resultado idêntico e previsível.
Não definido pela alternativa.
Resultado pode variar (não determinístico).
Resultado varia (não determinístico).
Não definido pela alternativa.
Permite cache pelo SGBD?
Sim, devido à previsibilidade.
Não mencionado; a restrição de paralelismo não impede cache.
Não, pois o resultado é imprevisível.
Não, pois o resultado é imprevisível.
Não, pois transações internas impedem cache.
Uso em consultas SQL
Pode ser chamada diretamente em consultas.
Restrito a Stored Procedures (incorreto).
Pode ser chamada, mas sem otimização.
Pode ser chamada, mas sem otimização.
Geralmente não é permitido em funções.
Exemplo de aplicação
fn_nome_funcionario(id) sempre retorna o mesmo nome para o mesmo ID.
N/A (definição incorreta).
fn_ler_arquivo(caminho) pode variar.
fn_aleatorio() retorna valores diferentes.
fn_transacao() com controle transacional.
Função determinística: Definição (Mesmo resultado para mesmos parâmetros, Independente do estado do banco, Permite cache pelo SGBD); Características (Sem I/O externo, Sem aleatoriedade, Sem relógio do sistema, Sem transações (COMMIT/ROLLBACK)); Uso (Chamada em consultas SQL, Pode ser executada em paralelo)
Alternativa A — ❌ Incorreta
Diz que uma função determinística "não pode ser executada em paralelo e só pode ser chamada por Stored Procedures". Isso é falso: funções determinísticas podem ser executadas em paralelo (dependendo da implementação) e podem ser chamadas diretamente em consultas SQL, não apenas por procedures. A definição não envolve paralelismo ou restrição de chamada.
Alternativa B — ✅ Correta ⟵ GABARITO
Afirma que uma função determinística "sempre retorna o mesmo resultado quando chamada com o mesmo conjunto de valores de entrada, independentemente do estado do banco de dados no momento da execução". Essa é exatamente a definição do conceito. O SGBD pode confiar nessa propriedade para cachear o resultado, melhorando a performance.
Alternativa C — ❌ Incorreta
Afirma que a função "realiza operações de I/O, sendo forçada a ser recalculada a cada chamada mesmo considerando o mesmo conjunto de valores de entrada". Uma função com I/O (como leitura de arquivos ou acesso a rede) é, por natureza, não determinística, pois seu resultado pode variar com o estado externo. Portanto, essa descrição se refere a uma função não determinística, não à determinística.
Alternativa D — ❌ Incorreta
Diz que a função "utiliza valores aleatórios ou o relógio do sistema, impedindo o caching dos resultados tendo por base valores de entrada diferentes". O uso de aleatoriedade ou tempo do sistema torna a função não determinística, pois o resultado varia mesmo com os mesmos parâmetros. A definição de função determinística exclui exatamente esse comportamento.
Alternativa E — ❌ Incorreta
Afirma que a função "possui lógica de COMMIT e ROLLBACK embutida". Funções em SQL geralmente não devem conter transações; isso é mais comum em stored procedures. A presença de COMMIT/ROLLBACK não é uma característica de determinismo, mas sim de controle transacional. Além disso, funções que alteram o estado do banco de dados (com side effects) não são consideradas determinísticas.
PEGA ESSA DICA!
Na prova, lembre-se do conceito: função determinística = mesmas entradas → mesma saída, permitindo caching. Funções não determinísticas usam random(), current_timestamp, ou dependem de dados que podem mudar. Questões sobre otimização de consultas frequentemente cobram essa distinção.