1. like the idea because right now I'm having to track which prepared statement (sets) are in which session. using xcache to track this, but little bit dangerous. could query the database first but the whole idea is to take a load off the db.
2. perhaps "global" could mean simply that the definition is global - if called for session and not exist in session, then session prepares it first from the global def. there would need to be a back reference in case the global def was changed or dropped.
3. don't understand your statement about how prepared statements can be used as subqueries - you mean something like
select .. from tab1 t1 where t1.col1 in( exec prep1(..) )
or exactly what?