A palavra-chave DETERMINISTIC é uma promessa de que uma função retorna o mesmo resultado para os mesmos valores de entrada. O Oracle confia nessa declaração e não verifica se a implementação a cumpre. Uma declaração incorreta pode fazer com que consultas usem resultados desatualizados ou incorretos.

Esta regra identifica funções determinísticas cuja implementação contém evidências claras de dependência de estado variável de tempo, sessão ou sequência, leitura de dados mutáveis do banco ou efeito colateral. A análise é deliberadamente conservadora e não prova que uma função não reportada seja determinística. Ela não infere impureza a partir de chamadas para rotinas definidas pelo usuário, estado de pacote ou global não resolvido, ou expressões sensíveis a NLS. Para funções de pacote, a declaração deve ser DETERMINISTIC na especificação de pacote correspondente.

Código em desconformidade

CREATE FUNCTION current_value RETURN DATE DETERMINISTIC IS
BEGIN
  RETURN SYSDATE;
END;

Código correto

CREATE FUNCTION double_value(p_value NUMBER) RETURN NUMBER DETERMINISTIC IS
BEGIN
  RETURN p_value * 2;
END;