<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FObject_Oriented_Database%2FObject_Table</id>
		<title>Oracle PL/SQL/Object Oriented Database/Object Table - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL%2FObject_Oriented_Database%2FObject_Table"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Table&amp;action=history"/>
		<updated>2026-05-24T22:37:23Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Table&amp;diff=2697&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Table&amp;diff=2697&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Table&amp;diff=2698&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Table&amp;diff=2698&amp;oldid=prev"/>
				<updated>2010-05-26T10:02:41Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Crate table with object column==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --User-defined types&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TYPE address_typ AS OBJECT&lt;br /&gt;
  2   (StreetNo      NUMBER(10),&lt;br /&gt;
  3    StreetName    VARCHAR2(100),&lt;br /&gt;
  4    AptNo         NUMBER(5),&lt;br /&gt;
  5    City          VARCHAR2(100),&lt;br /&gt;
  6    State         VARCHAR2(100),&lt;br /&gt;
  7    ZipCode       NUMBER(9),&lt;br /&gt;
  8    Country       VARCHAR2(100));&lt;br /&gt;
  9  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  CREATE TABLE people&lt;br /&gt;
  2    (ID        NUMBER(5),&lt;br /&gt;
  3     FirstName VARCHAR2(100),&lt;br /&gt;
  4     LastName  VARCHAR2(100),&lt;br /&gt;
  5     Address   address_typ);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  INSERT INTO people&lt;br /&gt;
  2   VALUES(10,&lt;br /&gt;
  3          &amp;quot;John&amp;quot;,&lt;br /&gt;
  4          &amp;quot;Smith&amp;quot;,&lt;br /&gt;
  5          address_typ(123,&amp;quot;Happy Lane&amp;quot;, NULL,&lt;br /&gt;
  6          &amp;quot;Smalltown&amp;quot;,&amp;quot;Alaska&amp;quot;, 12345,&amp;quot;USA&amp;quot;) );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * FROM people;&lt;br /&gt;
                      ID FIRSTNAME&lt;br /&gt;
------------------------ ----------------------------------------------------------------------------------------------------&lt;br /&gt;
LASTNAME&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
ADDRESS(STREETNO, STREETNAME, APTNO, CITY, STATE, ZIPCODE, COUNTRY)&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
                   10.00 John&lt;br /&gt;
Smith&lt;br /&gt;
ADDRESS_TYP(123.00, &amp;quot;Happy Lane&amp;quot;, NULL, &amp;quot;Smalltown&amp;quot;, &amp;quot;Alaska&amp;quot;, 12345.00, &amp;quot;USA&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table people;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create a new type and add it to a table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table emp&lt;br /&gt;
  2  ( empno      NUMBER(4)    constraint E_PK primary key&lt;br /&gt;
  3  , ename      VARCHAR2(8)&lt;br /&gt;
  4  , init       VARCHAR2(5)&lt;br /&gt;
  5  , job        VARCHAR2(8)&lt;br /&gt;
  6  , mgr        NUMBER(4)&lt;br /&gt;
  7  , bdate      DATE&lt;br /&gt;
  8  , sal        NUMBER(6,2)&lt;br /&gt;
  9  , comm       NUMBER(6,2)&lt;br /&gt;
 10  , deptno     NUMBER(2)    default 10&lt;br /&gt;
 11  ) ;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(1,&amp;quot;Tom&amp;quot;,&amp;quot;N&amp;quot;,   &amp;quot;TRAINER&amp;quot;, 13,date &amp;quot;1965-12-17&amp;quot;,  800 , NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(2,&amp;quot;Jack&amp;quot;,&amp;quot;JAM&amp;quot;, &amp;quot;Tester&amp;quot;,6,date &amp;quot;1961-02-20&amp;quot;,  1600, 300,   30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(3,&amp;quot;Wil&amp;quot;,&amp;quot;TF&amp;quot; ,  &amp;quot;Tester&amp;quot;,6,date &amp;quot;1962-02-22&amp;quot;,  1250, 500,   30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(4,&amp;quot;Jane&amp;quot;,&amp;quot;JM&amp;quot;,  &amp;quot;Designer&amp;quot;, 9,date &amp;quot;1967-04-02&amp;quot;,  2975, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(5,&amp;quot;Mary&amp;quot;,&amp;quot;P&amp;quot;,  &amp;quot;Tester&amp;quot;,6,date &amp;quot;1956-09-28&amp;quot;,  1250, 1400,  30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(6,&amp;quot;Black&amp;quot;,&amp;quot;R&amp;quot;,   &amp;quot;Designer&amp;quot;, 9,date &amp;quot;1963-11-01&amp;quot;,  2850, NULL,  30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(7,&amp;quot;Chris&amp;quot;,&amp;quot;AB&amp;quot;,  &amp;quot;Designer&amp;quot;, 9,date &amp;quot;1965-06-09&amp;quot;,  2450, NULL,  10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(8,&amp;quot;Smart&amp;quot;,&amp;quot;SCJ&amp;quot;, &amp;quot;TRAINER&amp;quot;, 4,date &amp;quot;1959-11-26&amp;quot;,  3000, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(9,&amp;quot;Peter&amp;quot;,&amp;quot;CC&amp;quot;,   &amp;quot;Designer&amp;quot;,NULL,date &amp;quot;1952-11-17&amp;quot;,  5000, NULL,  10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(10,&amp;quot;Take&amp;quot;,&amp;quot;JJ&amp;quot;, &amp;quot;Tester&amp;quot;,6,date &amp;quot;1968-09-28&amp;quot;,  1500, 0,     30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(11,&amp;quot;Ana&amp;quot;,&amp;quot;AA&amp;quot;,  &amp;quot;TRAINER&amp;quot;, 8,date &amp;quot;1966-12-30&amp;quot;,  1100, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(12,&amp;quot;Jane&amp;quot;,&amp;quot;R&amp;quot;,   &amp;quot;Manager&amp;quot;,   6,date &amp;quot;1969-12-03&amp;quot;,  800 , NULL,  30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(13,&amp;quot;Fake&amp;quot;,&amp;quot;MG&amp;quot;,   &amp;quot;TRAINER&amp;quot;, 4,date &amp;quot;1959-02-13&amp;quot;,  3000, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into emp values(14,&amp;quot;Mike&amp;quot;,&amp;quot;TJA&amp;quot;,&amp;quot;Manager&amp;quot;,   7,date &amp;quot;1962-01-23&amp;quot;,  1300, NULL,  10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table e&lt;br /&gt;
  2  as&lt;br /&gt;
  3  select empno, ename, init, mgr, deptno&lt;br /&gt;
  4  from   emp;&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type numberlist_t&lt;br /&gt;
  2  as varray(4) of varchar2(20);&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; column numlist format a60&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter table e add (numlist numberlist_t);&lt;br /&gt;
Table altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; describe e&lt;br /&gt;
 Name                                      Null?    Type&lt;br /&gt;
 ----------------------------------------- -------- ----------------------------&lt;br /&gt;
 EMPNO                                              NUMBER(4)&lt;br /&gt;
 ENAME                                              VARCHAR2(8)&lt;br /&gt;
 INIT                                               VARCHAR2(5)&lt;br /&gt;
 JOB                                                VARCHAR2(8)&lt;br /&gt;
 MGR                                                NUMBER(4)&lt;br /&gt;
 BDATE                                              DATE&lt;br /&gt;
 SAL                                                NUMBER(6,2)&lt;br /&gt;
 COMM                                               NUMBER(6,2)&lt;br /&gt;
 DEPTNO                                             NUMBER(2)&lt;br /&gt;
 NUMLIST                                            NUMBERLIST_T&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select empno, numlist from e;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table e;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create a table based on user-defined object only==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  type person as object (&lt;br /&gt;
  3   first_name varchar2(100),&lt;br /&gt;
  4   last_name varchar2(100),&lt;br /&gt;
  5   dob date,&lt;br /&gt;
  6   phone varchar2(100),&lt;br /&gt;
  7   member function get_last_name return varchar2,&lt;br /&gt;
  8   member function get_phone_number return varchar2 )&lt;br /&gt;
  9  not final&lt;br /&gt;
 10  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  type body person as&lt;br /&gt;
  3    member function get_last_name return varchar2 is&lt;br /&gt;
  4    begin&lt;br /&gt;
  5      return self.last_name;&lt;br /&gt;
  6    end;&lt;br /&gt;
  7    member function get_phone_number return varchar2 is&lt;br /&gt;
  8    begin&lt;br /&gt;
  9      return self.phone;&lt;br /&gt;
 10    end;&lt;br /&gt;
 11  end;&lt;br /&gt;
 12  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table person_table( p person );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table person_table;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create a table with nested user defined type as column==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create type order_item_type as object (&lt;br /&gt;
  2      line_item_id      number(3),&lt;br /&gt;
  3      product_id        number(6),&lt;br /&gt;
  4      unit_price        number(8,2),&lt;br /&gt;
  5      quantity  number(4)&lt;br /&gt;
  6    )&lt;br /&gt;
  7    /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create type order_item_list_type as table of order_item_type&lt;br /&gt;
  2    /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create table orders(&lt;br /&gt;
  2      order_id          number(12) not null,&lt;br /&gt;
  3      order_date        timestamp(6) with local time zone,&lt;br /&gt;
  4      customer_id       number(6),&lt;br /&gt;
  5      order_items       order_item_list_type )&lt;br /&gt;
  6      nested table order_items store as order_items_tab&lt;br /&gt;
  7     /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table orders;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type order_item_list_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type order_item_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create a table with user define varray as column type==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create type employee_type as object (&lt;br /&gt;
  2      employee_id       number,&lt;br /&gt;
  3      first_name        varchar2(30),&lt;br /&gt;
  4      last_name         varchar2(30)&lt;br /&gt;
  5    );&lt;br /&gt;
  6    /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create type employee_list_type as varray(50) of employee_type&lt;br /&gt;
  2    /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create table departments (&lt;br /&gt;
  2      department_id   number,&lt;br /&gt;
  3      department_name varchar2(30),&lt;br /&gt;
  4      manager         employee_type,&lt;br /&gt;
  5      employees       employee_list_type )&lt;br /&gt;
  6    /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table departments;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type employee_list_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type employee_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create table based on single data type==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt; create table myTable of xmltype;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into myTable values(XMLTYPE(&amp;quot;&lt;br /&gt;
  2    &amp;lt;customer&amp;gt;&lt;br /&gt;
  3     &amp;lt;name&amp;gt;name value&amp;lt;/name&amp;gt;&lt;br /&gt;
  4     &amp;lt;telephone&amp;gt;123 555-1234&amp;lt;/telephone&amp;gt;&lt;br /&gt;
  5    &amp;lt;/customer&amp;gt;&amp;quot;))&lt;br /&gt;
  6  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from myTable;&lt;br /&gt;
&lt;br /&gt;
SYS_NC_ROWINFO$&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
  &amp;lt;customer&amp;gt;&lt;br /&gt;
   &amp;lt;name&amp;gt;name value&amp;lt;/name&amp;gt;&lt;br /&gt;
   &amp;lt;telephone&amp;gt;123 555-1234&amp;lt;/telephone&amp;gt;&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myTable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create table with nested types==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --CREATE [OR REPLACE] TYPE &amp;lt;object table schema&amp;gt; AS TABLE OF (object schema)&lt;br /&gt;
SQL&amp;gt; --/&lt;br /&gt;
SQL&amp;gt; --CREATE TABLE &amp;lt;table schema&amp;gt;&lt;br /&gt;
SQL&amp;gt; --   (attribute        attribute type, ....,&lt;br /&gt;
SQL&amp;gt; --    attribute        attribute type,&lt;br /&gt;
SQL&amp;gt; --    nested item      object table schema);&lt;br /&gt;
SQL&amp;gt; --    NESTED TABLE nested item STORE AS storage table schema;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --CREATE TABLE &amp;lt;table schema&amp;gt;&lt;br /&gt;
SQL&amp;gt; --   (attribute              attribute type, ....,&lt;br /&gt;
SQL&amp;gt; --    outer nested item      object table schema);&lt;br /&gt;
SQL&amp;gt; --   NESTED TABLE &amp;lt;outer nested item&amp;gt;&lt;br /&gt;
SQL&amp;gt; --      STORE AS &amp;lt;outer storage table schema&amp;gt;&lt;br /&gt;
SQL&amp;gt; --      (NESTED TABLE &amp;lt;inner nested item&amp;gt;&lt;br /&gt;
SQL&amp;gt; --         STORE AS &amp;lt;inner storage table schema&amp;gt;);&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --Example:&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE personType AS OBJECT&lt;br /&gt;
  2      (person_id        VARCHAR2(10),&lt;br /&gt;
  3       person_name      VARCHAR2(30))&lt;br /&gt;
  4      /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE Person_Table AS TABLE OF personType&lt;br /&gt;
  2   /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Course&lt;br /&gt;
  2      (course_id        VARCHAR2(10),&lt;br /&gt;
  3       course_name      VARCHAR2(20),&lt;br /&gt;
  4       Programmer         Person_Table)&lt;br /&gt;
  5       NESTED TABLE Programmer STORE AS Person_tab;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table course;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create table with user defined type as column==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create type employee_type as object (&lt;br /&gt;
  2      employee_id       number,&lt;br /&gt;
  3      first_name        varchar2(30),&lt;br /&gt;
  4      last_name         varchar2(30)&lt;br /&gt;
  5    );&lt;br /&gt;
  6    /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create type employee_list_type as varray(50) of employee_type&lt;br /&gt;
  2    /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;  create table departments (&lt;br /&gt;
  2      department_id   number,&lt;br /&gt;
  3      department_name varchar2(30),&lt;br /&gt;
  4      manager         employee_type,&lt;br /&gt;
  5      employees       employee_list_type )&lt;br /&gt;
  6    /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table departments;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type employee_list_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type employee_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create type and use it as table column==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt; create or replace type addressType as object&lt;br /&gt;
  2  (&lt;br /&gt;
  3      Street   VARCHAR2(50),&lt;br /&gt;
  4      City      VARCHAR2(25),&lt;br /&gt;
  5      State     CHAR(2),&lt;br /&gt;
  6      Zip       NUMBER&lt;br /&gt;
  7  );&lt;br /&gt;
  8  /&lt;br /&gt;
SQL&amp;gt; create table CUSTOMER&lt;br /&gt;
  2  (&lt;br /&gt;
  3      Name     VARCHAR2(25),&lt;br /&gt;
  4      Address   addressType&lt;br /&gt;
  5  );&lt;br /&gt;
SQL&amp;gt; /&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; insert into CUSTOMER values(1,addressType(&amp;quot;My Street&amp;quot;, &amp;quot;Some City&amp;quot;, &amp;quot;ST&amp;quot;, 10001));&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type addressType force;&lt;br /&gt;
SQL&amp;gt; drop table customer;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Implementation of many to many using object references==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE personType AS OBJECT&lt;br /&gt;
  2      (person_id        VARCHAR2(10),&lt;br /&gt;
  3       person_name      VARCHAR2(30))&lt;br /&gt;
  4      /&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE courseType AS OBJECT&lt;br /&gt;
  2      (course_id        VARCHAR2(10),&lt;br /&gt;
  3       course_name      VARCHAR2(30))&lt;br /&gt;
  4      /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp OF personType&lt;br /&gt;
  2      (person_id NOT NULL,&lt;br /&gt;
  3       PRIMARY KEY (person_id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Course OF courseType&lt;br /&gt;
  2      (course_id NOT NULL,&lt;br /&gt;
  3       PRIMARY KEY (course_id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Enrolls_in&lt;br /&gt;
  2      (emp    REF personType,&lt;br /&gt;
  3       course     REF courseType);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table Course;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table Enrolls_in;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Implementation of multiple inheritance relationship==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt; CREATE TABLE Person&lt;br /&gt;
  2      (id         VARCHAR2(10) NOT NULL,&lt;br /&gt;
  3       name       VARCHAR2(20),&lt;br /&gt;
  4       address    VARCHAR2(35),&lt;br /&gt;
  5       PRIMARY KEY (id));&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp&lt;br /&gt;
  2      (id         VARCHAR2(10) NOT NULL,&lt;br /&gt;
  3       course     VARCHAR2(10),&lt;br /&gt;
  4       year       VARCHAR2(4),&lt;br /&gt;
  5       PRIMARY KEY (id),&lt;br /&gt;
  6       FOREIGN KEY (id) REFERENCES Person (id) ON DELETE CASCADE);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Staff&lt;br /&gt;
  2      (id         VARCHAR2(10) NOT NULL,&lt;br /&gt;
  3       department VARCHAR2(10),&lt;br /&gt;
  4       room_no    VARCHAR2(4),&lt;br /&gt;
  5       PRIMARY KEY (id),&lt;br /&gt;
  6       FOREIGN KEY (id) REFERENCES Person (id) ON DELETE CASCADE);&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Tutor&lt;br /&gt;
  2      (id         VARCHAR2(10) NOT NULL,&lt;br /&gt;
  3       no_hours   NUMBER,&lt;br /&gt;
  4       rate       NUMBER,&lt;br /&gt;
  5       PRIMARY KEY (id) ,&lt;br /&gt;
  6       FOREIGN KEY (id) REFERENCES Person (id) ON DELETE CASCADE);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table Person cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table Staff;&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table Tutor;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Implementation of one to many using object references==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE personType AS OBJECT&lt;br /&gt;
  2      (person_id        VARCHAR2(10),&lt;br /&gt;
  3       person_name      VARCHAR2(30))&lt;br /&gt;
  4      /&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE courseType AS OBJECT&lt;br /&gt;
  2      (course_id        VARCHAR2(10),&lt;br /&gt;
  3       course_name      VARCHAR2(30),&lt;br /&gt;
  4       course_Programmer  REF personType)&lt;br /&gt;
  5      /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Programmer OF personType&lt;br /&gt;
  2      (person_id NOT NULL,&lt;br /&gt;
  3       PRIMARY KEY (person_id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Course OF courseType&lt;br /&gt;
  2      (course_id NOT NULL,&lt;br /&gt;
  3       PRIMARY KEY (course_id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type personType force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type courseType force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table Programmer;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table Course;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Multilevel aggregation relationships using nested tables==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE PartType AS OBJECT&lt;br /&gt;
  2     (PartType_id      VARCHAR2(10),&lt;br /&gt;
  3      description      VARCHAR2(30))&lt;br /&gt;
  4     /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE PartType_Table AS TABLE OF PartType&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE Hard_Disk AS OBJECT&lt;br /&gt;
  2     (hd_id      VARCHAR2(10),&lt;br /&gt;
  3      capacity   VARCHAR2(20),&lt;br /&gt;
  4      controller PartType_Table)&lt;br /&gt;
  5     /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE Hard_Disk_Table AS TABLE OF Hard_Disk&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE PC&lt;br /&gt;
  2     (pc_id      VARCHAR2(10) NOT NULL,&lt;br /&gt;
  3      hd         Hard_Disk_Table,&lt;br /&gt;
  4      PRIMARY KEY (pc_id))&lt;br /&gt;
  5     NESTED TABLE hd STORE AS HD_tab&lt;br /&gt;
  6        (NESTED TABLE controller STORE AS PartType_tab);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type PartType force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type PartType_Table force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type Hard_Disk force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type Hard_Disk_Table force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop table PC;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Nested table==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type myTableType&lt;br /&gt;
  2  as table of number(12,2)&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table t&lt;br /&gt;
  2  ( x int primary key, y myTableType )&lt;br /&gt;
  3  nested table y store as y_tab&lt;br /&gt;
  4  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table t;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type myTableType;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Object table: a table of type==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  type address as object(&lt;br /&gt;
  3   id number,&lt;br /&gt;
  4   street varchar2(100),&lt;br /&gt;
  5   state varchar2(2),&lt;br /&gt;
  6   zipcode varchar(11)&lt;br /&gt;
  7  )&lt;br /&gt;
  8  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table address_table of address&lt;br /&gt;
  2    /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table address_table;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type address;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==One to one using object references==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE officeType AS OBJECT&lt;br /&gt;
  2     (office_id        VARCHAR2(10),&lt;br /&gt;
  3      building_name    VARCHAR2(20))&lt;br /&gt;
  4     /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE personType AS OBJECT&lt;br /&gt;
  2     (person_id        VARCHAR2(10),&lt;br /&gt;
  3      person_name      VARCHAR2(30),&lt;br /&gt;
  4      person_office    REF officeType)&lt;br /&gt;
  5     /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Office OF officeType&lt;br /&gt;
  2     (office_id NOT NULL,&lt;br /&gt;
  3      PRIMARY KEY (office_id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Programmer OF personType&lt;br /&gt;
  2     (person_id NOT NULL,&lt;br /&gt;
  3     PRIMARY KEY (person_id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type officeType force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type personType force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop table Office;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table Programmer;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use a table alias and the name of the object==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE aobj AS object (&lt;br /&gt;
  2                    state CHAR(2),&lt;br /&gt;
  3                    amt NUMBER(5),&lt;br /&gt;
  4&lt;br /&gt;
  5                    MEMBER FUNCTION mult (times in number) RETURN number,&lt;br /&gt;
  6                    PRAGMA RESTRICT_REFERENCES(mult, WNDS));&lt;br /&gt;
  7  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY aobj AS&lt;br /&gt;
  2    MEMBER FUNCTION mult (times in number) RETURN number&lt;br /&gt;
  3    IS&lt;br /&gt;
  4    BEGIN&lt;br /&gt;
  5      RETURN times * self.amt; /* SEE BELOW */&lt;br /&gt;
  6    END;&lt;br /&gt;
  7  END;&lt;br /&gt;
  8  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt; CREATE TABLE aobjtable (arow aobj);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; /&lt;br /&gt;
CREATE TABLE aobjtable (arow aobj)&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO aobjtable VALUES (aobj(&amp;quot;FL&amp;quot;,25));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO aobjtable VALUES (aobj(&amp;quot;AL&amp;quot;,35));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO aobjtable VALUES (aobj(&amp;quot;OH&amp;quot;,15));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- Use a table alias and the name of the object&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT x.arow.state, x.arow.amt&lt;br /&gt;
  2  FROM aobjtable x;&lt;br /&gt;
AR   AROW.AMT&lt;br /&gt;
-- ----------&lt;br /&gt;
FL         25&lt;br /&gt;
AL         35&lt;br /&gt;
OH         15&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DESC aobjtable;&lt;br /&gt;
 Name                                                                                                  Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------&lt;br /&gt;
 AROW                                                                                                   AOBJ&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table aobjtable;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use user-defined type to combine query logic==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt; create or replace type myScalarType as object( cnt number, average number )&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select username, a.data.cnt, a.data.average&lt;br /&gt;
  2    from (&lt;br /&gt;
  3      select username, (select myScalarType( count(*), avg(object_id) ) from all_objects b where b.owner = a.username ) data from all_users a ) A&lt;br /&gt;
  4  /&lt;br /&gt;
USERNAME                         DATA.CNT DATA.AVERAGE&lt;br /&gt;
------------------------------ ---------- ------------&lt;br /&gt;
SYS                                  6520   5009.74064&lt;br /&gt;
SYSTEM                                422   6095.87678&lt;br /&gt;
OUTLN                                   7   1172.57143&lt;br /&gt;
DIP                                     0&lt;br /&gt;
TSMSYS                                  2       8606.5&lt;br /&gt;
INV15                                   2      16237.5&lt;br /&gt;
DBSNMP                                 46   9592.65217&lt;br /&gt;
INV10                                   2      16227.5&lt;br /&gt;
CTXSYS                                338   9877.92012&lt;br /&gt;
XDB                                   334   10800.7485&lt;br /&gt;
ANONYMOUS                               0&lt;br /&gt;
USERNAME                         DATA.CNT DATA.AVERAGE&lt;br /&gt;
------------------------------ ---------- ------------&lt;br /&gt;
MDSYS                                 458   11667.2009&lt;br /&gt;
HR                                     34      12104.5&lt;br /&gt;
FLOWS_FILES                            11   12717.2727&lt;br /&gt;
FLOWS_020100                         1085    12813.424&lt;br /&gt;
sqle                                530   16254.6849&lt;br /&gt;
INV11                                   2      16229.5&lt;br /&gt;
INV12                                   2      16231.5&lt;br /&gt;
INV13                                   2      16233.5&lt;br /&gt;
INV14                                   2      16235.5&lt;br /&gt;
PLSQL                                   0&lt;br /&gt;
INV16                                   2      16239.5&lt;br /&gt;
USERNAME                         DATA.CNT DATA.AVERAGE&lt;br /&gt;
------------------------------ ---------- ------------&lt;br /&gt;
INV17                                   2      16241.5&lt;br /&gt;
INV18                                   2      16243.5&lt;br /&gt;
INV19                                   2      16245.5&lt;br /&gt;
INV20                                   2      16247.5&lt;br /&gt;
DEFINER                                 4      16250.5&lt;br /&gt;
27 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use user-defined varray type as column type==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
SQL&amp;gt; create type myArrayType&lt;br /&gt;
  2  as varray(10) of number(12,2)&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table t&lt;br /&gt;
  2  ( x int primary key, y myArrayType )&lt;br /&gt;
  3  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table t;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type myArrayType;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>