Expert

Q:

9-26.

The statements are:

  1. False. ALL_OBJECTS shows you the list of all views (standard SQL and object views) accessible to your schema.

  2. True. An object view is a view that presents data stored in relational tables as an object.

  3. True. You can use an object view to navigate using REFs rather than joins; one of the nice features of the object layer is the ability to avoid complex and expensive joins. Object views allow you to do this with underlying relational tables.

  4. True. Early versions of object support in Oracle make it difficult to change the definitions of object types. Object views offer ways to change table structures and object type definitions in existing systems.

  5. False. One of the primary motivations for providing object views was to allow you to extend the design of a legacy database, implementing new features with objects, while retaining existing functionality.

Q:

9-27.

Most of the definition of the object view is quite straightforward. It gets a bit tricky when you want to include the collection. To accomplish this, you must use the CAST and MULTISET operators to transform the child relational table to a collection column:

CREATE VIEW CD_object_vw
   OF CD_t
   WITH OBJECT OID (id)
AS
   SELECT cd.id,
          cd.title,
          cd.artist,
          cd.label,
          CAST (MULTISET
             (SELECT keyword
                FROM cd_keywords
               WHERE cd_keywords.cd_id = cd.id)
            AS cd_keyword_tab_t)
   FROM compact_discs cd
;

And here is a query that verifies the results:

SQL> SELECT artist, title, keywords FROM cd_object_vw; ARTIST TITLE KEYWORDS ---------- ...

Get Oracle PL/SQL Programming: A Developer's Workbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.