In PL/SQL, a cursor's return values *can* easily be...
...fetch into-ed, into a PL/SQL "object". NB, that is a *cursor* -- a single row from the query. Then again, PL/SQL is enough of a procedural language that looping through rows one by one is what you're most likely to do anyway, so this rather simple struct-like "object" is likely to fulfill most of your needs.
Sorry, Scott, I haven't actually got the opportunity to use that stuff yet; the projects I've been on so far have used old versions of the DB, and my code has had to conform to other people's practices (no doubt formed on even older versions). But I gather actual methods aren't all that tightly encapsulated into these "objects". HTH(?).
Christian R. Conrad
The Man Who Knows Fucking Everything