My first suggestion would be to look in DBD::Oracle and see what it stores in $sth after a prepare(), you may be able to get some information from that. More likely though, you won't. So my next best guess would be do a DESCRIBE and parse its output. That probably won't be satisfactory either. So my third guess is a module I haven't used and isn't Oracle specific but has richer parsing than my SQL::Statement
an embeddable parser for MySQL which can return data structures of any SQL that MySQL understands.