Q:

Functioning of Oracle's Server result Cache

I am reading the Oracle concepts doc and have a doubt [about general cache mechanism ] :

PL/SQL function code can include a request to cache its results. Upon invocation of
  this function, the system checks the cache. If the cache contains the result from a
  previous function call with the same parameter values, then the system returns the
  cached result to the invoker and does not reexecute the function body. If the cache
  does not contain the result, then the system executes the function body and adds the
  result (for these parameter values) to the cache before returning control to the invoker

My doubt: 
After a PL/SQL function is executed, its result set is stored in cache.
Then a DDL statement changes the table/index/anything that the function uses...
If I run the same PL/SQL function now, will I get the same result or updated result?

A:

cached results are invalidated and regenerated when transactions occur
  against the underlying data

I am fairly confident the same would be true for DDL changes but did you mean DML? The long and short is that Oracle is not going to allow an inconsistent result. 

