A palavra-chave DETERMINISTIC é uma promessa de que uma função retorna o mesmo resultado para os mesmos valores de entrada.
Declarar uma função adequada como determinística pode permitir que o Oracle reutilize seu resultado, mas o Oracle confia na declaração
em vez de provar que ela é válida. Por isso, esta regra recomenda a declaração apenas para um subconjunto restrito e de alta confiança.
A recomendação é limitada a funções com parâmetros somente de entrada e uma implementação composta por estado local, literais,
operadores determinísticos, fluxo de controle simples e nenhuma chamada para rotinas desconhecidas. Leituras do banco, efeitos
colaterais, estado externo, sequências, comportamento explícito de exceção e construções não suportadas impedem a recomendação.
Apenas chamadas para NVL numérico e chamadas de um argumento com tipos conhecidos para LTRIM,
RTRIM e TRIM simples são atualmente reconhecidas como seguras.
A ausência de um problema não prova que uma função seja determinística, e esta regra não faz uma análise completa do fluxo de exceções.
Esta regra não é aplicada quando há metadados do Oracle Forms disponíveis. Nesse contexto, as funções são locais a um módulo Forms,
portanto adicionar DETERMINISTIC não oferece o benefício de uma função armazenada no banco que esta recomendação procura.
CREATE FUNCTION double_value(p_value NUMBER) RETURN NUMBER IS BEGIN RETURN p_value * 2; END;
CREATE FUNCTION current_value RETURN DATE IS BEGIN RETURN SYSDATE; END;
Esta função não é sugerida como candidata a determinística porque seu resultado depende do horário atual.