Estou lendo o documento de conceitos do Oracle e tenho uma dúvida [sobre o mecanismo geral de cache]:
O código de função PL/SQL pode incluir uma solicitação para armazenar em cache seus resultados. Ao invocar esta função, o sistema verifica o cache. Se o cache contiver o resultado de uma chamada de função anterior com os mesmos valores de parâmetro, o sistema retornará o resultado armazenado em cache ao chamador e não executará novamente o corpo da função. Se o cache não contiver o resultado, o sistema executará o corpo da função e adicionará o resultado (para esses valores de parâmetro) ao cache antes de retornar o controle ao invocador
A minha dúvida:
Depois que uma função PL/SQL é executada, seu conjunto de resultados é armazenado no cache. Em seguida, uma instrução DDL altera a tabela/índice/qualquer coisa que a função usa...
Se eu executar a mesma função PL/SQL agora, obterei o mesmo resultado ou resultado atualizado?
Estou bastante confiante de que o mesmo seria verdade para alterações DDL, mas você quis dizer DML? O longo e curto é que a Oracle não vai permitir um resultado inconsistente.
Parte da funcionalidade integrada do Oracle é a notificação de alteração de dados . Esse mecanismo geralmente é usado para invalidação de cache em todas as camadas, por exemplo, se você armazenar em cache um resultado de consulta no lado do cliente , o DCN garante que você sempre será roteado para a cópia mais próxima, porém mais recente.