Intermediate

Q:

7-10.

The output is:

Type created.

No errors.

Table created.

 COUNT(*)
---------
        0

ERROR at line 2:
ORA-22812: cannot reference nested table column's storage table

Q:

7-11.

An error is produced because store tables cannot be accessed directly. All access must be through the outer table (hourly_temperatures):

SQL> SELECT count(*) FROM temperature_store;
SELECT count(*) FROM temperature_store
                     *
ERROR at line 1:
ORA-22812: cannot reference nested table column's storage table

Q:

7-12.

Here is the SQL syntax:

INSERT INTO student_answers (
   student_id,
   exam_date,
   exam_id,
   student_answer_values )
VALUES  (
   1,
   SYSDATE,
   1,
   answer_list_t(
      answer_t(1,10),
      answer_t(2,20),
      answer_t(3,30),
      answer_t(4,40),
      answer_t(5,50)));

Q:

7-13.

The query to show all fields is simple:

SQL> SET linesize 50
SQL> SELECT * FROM student_answers
  2  /

STUDENT_ID EXAM_DATE   EXAM_ID
---------- --------- ---------
STUDENT_ANSWER_VALUES(QUESTION_NO, ANSWER_NO)
--------------------------------------------------
         1 05-FEB-99         1
ANSWER_LIST_T(ANSWER_T(1, 10), ANSWER_T(2, 20), AN
SWER_T(3, 30), ANSWER_T(4, 40), ANSWER_T(5, 50))

The results however, leave something to be desired. This query returns the student_answer_values encapsulated within answer_list_t and answer_t.

In Oracle 8.0, the second query requires the THE operator (I’m not making this up) to translate the contents of the student_answer_values column into a table format:

SQL> SELECT * 2 FROM THE ( SELECT student_answer_values 3 FROM student_answers ); QUESTION_NO ANSWER_NO ...

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.