<?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_Tutorial%2FObject_Oriented%2FObject_Column</id>
		<title>Oracle PL/SQL Tutorial/Object Oriented/Object Column - История изменений</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_Tutorial%2FObject_Oriented%2FObject_Column"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Object_Oriented/Object_Column&amp;action=history"/>
		<updated>2026-05-24T14:28:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Object_Oriented/Object_Column&amp;diff=2961&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_Tutorial/Object_Oriented/Object_Column&amp;diff=2961&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</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_Tutorial/Object_Oriented/Object_Column&amp;diff=2962&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_Tutorial/Object_Oriented/Object_Column&amp;diff=2962&amp;oldid=prev"/>
				<updated>2010-05-26T10:04:33Z</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;== 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;
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;&amp;lt;/source&amp;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;
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;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Loading the &amp;quot;row object&amp;quot; Table==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;One way is to use the existing ADDRESS_OBJ values in some other table (e.g., Emp) like this:&amp;lt;/p&amp;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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE addressType as OBJECT(&lt;br /&gt;
  2  street VARCHAR2(20),&lt;br /&gt;
  3  city VARCHAR2(20),&lt;br /&gt;
  4  state CHAR(2),&lt;br /&gt;
  5  zip CHAR(5))&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp (empno NUMBER(3),&lt;br /&gt;
  2  name VARCHAR2(20),&lt;br /&gt;
  3  address addressType)&lt;br /&gt;
  4  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp VALUES (101, &amp;quot;Adam&amp;quot;,&lt;br /&gt;
  2  addressType(&amp;quot;1 A St.&amp;quot;,&amp;quot;Mobile&amp;quot;,&amp;quot;AL&amp;quot;,&amp;quot;36608&amp;quot;))&lt;br /&gt;
  3&lt;br /&gt;
SQL&amp;gt; select * from emp;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE address_table OF addressType;&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 Address_table&lt;br /&gt;
  2  SELECT e.address&lt;br /&gt;
  3  FROM emp e;&lt;br /&gt;
0 rows 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; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type addresstype;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Nested type 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;
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 or replace type personType as object&lt;br /&gt;
  2  (&lt;br /&gt;
  3      Name      VARCHAR2(25),&lt;br /&gt;
  4      Address   addressType&lt;br /&gt;
  5  );&lt;br /&gt;
  6  /&lt;br /&gt;
SQL&amp;gt; create table CUSTOMER&lt;br /&gt;
  2  (&lt;br /&gt;
  3   cid  NUMBER,&lt;br /&gt;
  4   Person       personType&lt;br /&gt;
  5  );&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into CUSTOMER values(444, personType(&amp;quot;Name&amp;quot;,addressType(&amp;quot;1 RD&amp;quot;, &amp;quot;Van&amp;quot;, &amp;quot;MA&amp;quot;, &amp;quot;10002&amp;quot;)));&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table customer;&lt;br /&gt;
SQL&amp;gt; drop type personType;&lt;br /&gt;
SQL&amp;gt; drop type addressType;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Nested varray and table collection 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type myScalarType as object( x int, y date, z varchar2(25) );&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 myArrayType as varray(25) of myScalarType&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 myTableType as table of myScalarType&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table t(a int,b myArrayType,c myTableType)nested table c store as c_tbl&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into t values ( 1,&lt;br /&gt;
  2                  myArrayType( myScalarType( 2, sysdate, &amp;quot;hello&amp;quot; ) ),&lt;br /&gt;
  3                  myTableType( myScalarType( 3, sysdate, &amp;quot;GoodBye&amp;quot; ) )&lt;br /&gt;
  4                                   );&lt;br /&gt;
1 row created.&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; drop type myArrayType;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type myScalarType;&lt;br /&gt;
Type dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Query a table with user-defined 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type address_type as object&lt;br /&gt;
  2    ( city    varchar2(30),&lt;br /&gt;
  3      street  varchar2(30),&lt;br /&gt;
  4      state   varchar2(2),&lt;br /&gt;
  5      zip     number&lt;br /&gt;
  6    )&lt;br /&gt;
  7  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create or replace type person_type as object&lt;br /&gt;
  2    ( name             varchar2(30),&lt;br /&gt;
  3      dob              date,&lt;br /&gt;
  4      home_address     address_type,&lt;br /&gt;
  5      work_address     address_type&lt;br /&gt;
  6    )&lt;br /&gt;
  7  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create table people of person_type&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; insert into people values ( &amp;quot;Tom&amp;quot;, &amp;quot;15-mar-1965&amp;quot;,&lt;br /&gt;
  2    address_type( &amp;quot;R&amp;quot;, &amp;quot;1 Street&amp;quot;, &amp;quot;Va&amp;quot;, &amp;quot;45678&amp;quot; ),&lt;br /&gt;
  3    address_type( &amp;quot;R&amp;quot;, &amp;quot;1 Way&amp;quot;, &amp;quot;Ca&amp;quot;, &amp;quot;23456&amp;quot; ) );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from people;&lt;br /&gt;
NAME                           DOB&lt;br /&gt;
------------------------------ ---------&lt;br /&gt;
HOME_ADDRESS(CITY, STREET, STATE, ZIP)&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
WORK_ADDRESS(CITY, STREET, STATE, ZIP)&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
Tom                            15-MAR-65&lt;br /&gt;
ADDRESS_TYPE(&amp;quot;R&amp;quot;, &amp;quot;1 Street&amp;quot;, &amp;quot;Va&amp;quot;, 45678)&lt;br /&gt;
ADDRESS_TYPE(&amp;quot;R&amp;quot;, &amp;quot;1 Way&amp;quot;, &amp;quot;Ca&amp;quot;, 23456)&lt;br /&gt;
Tom                            15-MAR-65&lt;br /&gt;
ADDRESS_TYPE(&amp;quot;R&amp;quot;, &amp;quot;1 Street&amp;quot;, &amp;quot;Va&amp;quot;, 45678)&lt;br /&gt;
ADDRESS_TYPE(&amp;quot;R&amp;quot;, &amp;quot;1 Way&amp;quot;, &amp;quot;Ca&amp;quot;, 23456)&lt;br /&gt;
NAME                           DOB&lt;br /&gt;
------------------------------ ---------&lt;br /&gt;
HOME_ADDRESS(CITY, STREET, STATE, ZIP)&lt;br /&gt;
----------------------------------------------------------------------------------------------------&lt;br /&gt;
WORK_ADDRESS(CITY, STREET, STATE, ZIP)&lt;br /&gt;
----------------------------------------------------------------------------------------------------&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; drop type person_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type address_type;&lt;br /&gt;
Type dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== SELECT with a WHERE Clause==&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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE ADDRESS_OBJ as OBJECT(&lt;br /&gt;
  2  street VARCHAR2(20),&lt;br /&gt;
  3  city VARCHAR2(20),&lt;br /&gt;
  4  state CHAR(2),&lt;br /&gt;
  5  zip CHAR(5))&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp (empno NUMBER(3),&lt;br /&gt;
  2  name VARCHAR2(20),&lt;br /&gt;
  3  address ADDRESS_OBJ)&lt;br /&gt;
  4  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp VALUES (101, &amp;quot;A&amp;quot;,ADDRESS_OBJ(&amp;quot;1 St.&amp;quot;,&amp;quot;Mobile&amp;quot;,&amp;quot;AL&amp;quot;,&amp;quot;36608&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from emp;&lt;br /&gt;
     EMPNO NAME                 ADDRESS(STREET, CITY, STATE, ZIP)&lt;br /&gt;
---------- -------------------- --------------------------------------------------&lt;br /&gt;
       101 A                    ADDRESS_OBJ(&amp;quot;1 St.&amp;quot;, &amp;quot;Mobile&amp;quot;, &amp;quot;AL&amp;quot;, &amp;quot;36608&amp;quot;)&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT name, e.address.city&lt;br /&gt;
  2  FROM emp e&lt;br /&gt;
  3  WHERE e.address.state = &amp;quot;AL&amp;quot;&lt;br /&gt;
  4&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 type ADDRESS_OBJ;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== The Object Type Column Objects==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A &amp;quot;column object&amp;quot; is an entity that can be used as a column in an Oracle table.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Column objects usually consist of columns defined with predefined types.&amp;lt;/p&amp;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;
SQL&amp;gt; --CREATE a TABLE with the Column Type in It&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE ADDRESS_OBJ as OBJECT(&lt;br /&gt;
  2  street VARCHAR2(20),&lt;br /&gt;
  3  city VARCHAR2(20),&lt;br /&gt;
  4  state CHAR(2),&lt;br /&gt;
  5  zip CHAR(5))&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp (&lt;br /&gt;
  2  empno NUMBER(3),&lt;br /&gt;
  3  name VARCHAR2(20),&lt;br /&gt;
  4  address ADDRESS_OBJ)&lt;br /&gt;
  5  /&lt;br /&gt;
Table created.&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; drop type ADDRESS_OBJ;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== UPDATE Data in a Table of Row Objects==&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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE addressType as OBJECT(&lt;br /&gt;
  2  street VARCHAR2(20),&lt;br /&gt;
  3  city VARCHAR2(20),&lt;br /&gt;
  4  state CHAR(2),&lt;br /&gt;
  5  zip CHAR(5))&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp (empno NUMBER(3),&lt;br /&gt;
  2  name VARCHAR2(20),&lt;br /&gt;
  3  address addressType)&lt;br /&gt;
  4  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp VALUES (101, &amp;quot;Adam&amp;quot;,addressType(&amp;quot;1 A St.&amp;quot;,&amp;quot;Mobile&amp;quot;,&amp;quot;AL&amp;quot;,&amp;quot;36608&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from emp;&lt;br /&gt;
     EMPNO NAME                 ADDRESS(STREET, CITY, STATE, ZIP)&lt;br /&gt;
---------- -------------------- --------------------------------------------------&lt;br /&gt;
       101 Adam                 ADDRESSTYPE(&amp;quot;1 A St.&amp;quot;, &amp;quot;Mobile&amp;quot;, &amp;quot;AL&amp;quot;, &amp;quot;36608&amp;quot;)&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE address_table OF addressType;&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 address_table VALUES (&amp;quot;4 D St.&amp;quot;, &amp;quot;Gulf&amp;quot;,&amp;quot;FL&amp;quot;,&amp;quot;32563&amp;quot;)&lt;br /&gt;
  2&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE address_table&lt;br /&gt;
  2  SET zip = &amp;quot;0000&amp;quot;&lt;br /&gt;
  3  WHERE zip = &amp;quot;32563&amp;quot;;&lt;br /&gt;
0 rows updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE address_table&lt;br /&gt;
  2  SET street = &amp;quot;AAAAAAA&amp;quot;&lt;br /&gt;
  3  WHERE city LIKE &amp;quot;Mob%&amp;quot;&lt;br /&gt;
  4  SELECT *&lt;br /&gt;
  5  FROM address_table&lt;br /&gt;
  6&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT *&lt;br /&gt;
  2  FROM address_table&lt;br /&gt;
  3&lt;br /&gt;
SQL&amp;gt;&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; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type addresstype;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use &amp;quot;table of custom type&amp;quot; as table 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE DEPT (DEPTNO NUMBER(2),DNAME VARCHAR2(14),LOC VARCHAR2(13) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (10, &amp;quot;ACCOUNTING&amp;quot;, &amp;quot;NEW YORK&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (20, &amp;quot;RESEARCH&amp;quot;, &amp;quot;DALLAS&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (30, &amp;quot;SALES&amp;quot;, &amp;quot;CHICAGO&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (40, &amp;quot;OPERATIONS&amp;quot;, &amp;quot;BOSTON&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; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_type&lt;br /&gt;
  2    as object&lt;br /&gt;
  3    (empno       number(4),&lt;br /&gt;
  4     ename       varchar2(10),&lt;br /&gt;
  5     job         varchar2(9),&lt;br /&gt;
  6     mgr         number(4),&lt;br /&gt;
  7     hiredate    date,&lt;br /&gt;
  8     sal         number(7, 2),&lt;br /&gt;
  9     comm        number(7, 2)&lt;br /&gt;
 10    );&lt;br /&gt;
 11  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_tab_type&lt;br /&gt;
  2    as table of emp_type&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create table dept_and_emp&lt;br /&gt;
  2    (deptno number(2) primary key,&lt;br /&gt;
  3     dname     varchar2(14),&lt;br /&gt;
  4     loc       varchar2(13),&lt;br /&gt;
  5     emps      emp_tab_type&lt;br /&gt;
  6    )&lt;br /&gt;
  7    nested table emps store as emps_nt;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter table emps_nt add constraint emps_empno_unique&lt;br /&gt;
  2               unique(empno)&lt;br /&gt;
  3  /&lt;br /&gt;
Table altered.&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into dept_and_emp&lt;br /&gt;
  2    select dept.*,&lt;br /&gt;
  3       CAST( multiset( select empno, ename, job, mgr, hiredate, sal, comm&lt;br /&gt;
  4                         from emp&lt;br /&gt;
  5                         where emp.deptno = dept.deptno ) AS emp_tab_type )&lt;br /&gt;
  6      from dept&lt;br /&gt;
  7  /&lt;br /&gt;
4 rows 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 d.deptno, d.dname, emp.*&lt;br /&gt;
  2    from dept_and_emp D, table(d.emps) emp&lt;br /&gt;
  3  /&lt;br /&gt;
    DEPTNO DNAME               EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM&lt;br /&gt;
---------- -------------- ---------- ---------- --------- ---------- --------- ---------- ----------&lt;br /&gt;
        10 ACCOUNTING           7782 CLARK      MANAGER         7839 09-JUN-81       2450&lt;br /&gt;
        10 ACCOUNTING           7839 KING       PRESIDENT            17-NOV-81       5000&lt;br /&gt;
        10 ACCOUNTING           7934 MILLER     CLERK           7782 23-JAN-82       1300&lt;br /&gt;
        20 RESEARCH             7369 SMITH      CLERK           7902 17-DEC-80        800&lt;br /&gt;
        20 RESEARCH             7566 JONES      MANAGER         7839 02-APR-81       2975&lt;br /&gt;
        20 RESEARCH             7788 SCOTT      ANALYST         7566 09-DEC-82       3000&lt;br /&gt;
        20 RESEARCH             7876 ADAMS      CLERK           7788 12-JAN-83       1100&lt;br /&gt;
        20 RESEARCH             7902 FORD       ANALYST         7566 03-DEC-81       3000&lt;br /&gt;
        30 SALES                7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300&lt;br /&gt;
        30 SALES                7521 WARD       SALESMAN        7698 22-FEB-81       1250        500&lt;br /&gt;
        30 SALES                7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400&lt;br /&gt;
    DEPTNO DNAME               EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM&lt;br /&gt;
---------- -------------- ---------- ---------- --------- ---------- --------- ---------- ----------&lt;br /&gt;
        30 SALES                7698 BLAKE      MANAGER         7839 01-MAY-81       2850&lt;br /&gt;
        30 SALES                7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0&lt;br /&gt;
        30 SALES                7900 JAMES      CLERK           7698 03-DEC-81        950&lt;br /&gt;
14 rows selected.&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 dept cascade constraint;&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; drop table dept_and_emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type emp_tab_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type emp_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use * to reference all columns from 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE DEPT (DEPTNO NUMBER(2),DNAME VARCHAR2(14),LOC VARCHAR2(13) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (10, &amp;quot;ACCOUNTING&amp;quot;, &amp;quot;NEW YORK&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (20, &amp;quot;RESEARCH&amp;quot;, &amp;quot;DALLAS&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (30, &amp;quot;SALES&amp;quot;, &amp;quot;CHICAGO&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (40, &amp;quot;OPERATIONS&amp;quot;, &amp;quot;BOSTON&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; CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_type&lt;br /&gt;
  2    as object&lt;br /&gt;
  3    (empno       number(4),&lt;br /&gt;
  4     ename       varchar2(10),&lt;br /&gt;
  5     job         varchar2(9),&lt;br /&gt;
  6     mgr         number(4),&lt;br /&gt;
  7     hiredate    date,&lt;br /&gt;
  8     sal         number(7, 2),&lt;br /&gt;
  9     comm        number(7, 2)&lt;br /&gt;
 10    );&lt;br /&gt;
 11  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_tab_type&lt;br /&gt;
  2    as table of emp_type&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create table dept_and_emp&lt;br /&gt;
  2    (deptno number(2) primary key,&lt;br /&gt;
  3     dname     varchar2(14),&lt;br /&gt;
  4     loc       varchar2(13),&lt;br /&gt;
  5     emps      emp_tab_type&lt;br /&gt;
  6    )&lt;br /&gt;
  7    nested table emps store as emps_nt;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter table emps_nt add constraint emps_empno_unique&lt;br /&gt;
  2               unique(empno)&lt;br /&gt;
  3  /&lt;br /&gt;
Table altered.&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into dept_and_emp&lt;br /&gt;
  2    select dept.*,&lt;br /&gt;
  3       CAST( multiset( select empno, ename, job, mgr, hiredate, sal, comm&lt;br /&gt;
  4                         from emp&lt;br /&gt;
  5                         where emp.deptno = dept.deptno ) AS emp_tab_type )&lt;br /&gt;
  6      from dept&lt;br /&gt;
  7  /&lt;br /&gt;
4 rows created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select d.deptno, d.dname, emp.*&lt;br /&gt;
  2    from dept_and_emp D, table(d.emps) emp&lt;br /&gt;
  3  /&lt;br /&gt;
    DEPTNO DNAME               EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM&lt;br /&gt;
---------- -------------- ---------- ---------- --------- ---------- --------- ---------- ----------&lt;br /&gt;
        10 ACCOUNTING           7782 CLARK      MANAGER         7839 09-JUN-81       2450&lt;br /&gt;
        10 ACCOUNTING           7839 KING       PRESIDENT            17-NOV-81       5000&lt;br /&gt;
        10 ACCOUNTING           7934 MILLER     CLERK           7782 23-JAN-82       1300&lt;br /&gt;
        20 RESEARCH             7369 SMITH      CLERK           7902 17-DEC-80        800&lt;br /&gt;
        20 RESEARCH             7566 JONES      MANAGER         7839 02-APR-81       2975&lt;br /&gt;
        20 RESEARCH             7788 SCOTT      ANALYST         7566 09-DEC-82       3000&lt;br /&gt;
        20 RESEARCH             7876 ADAMS      CLERK           7788 12-JAN-83       1100&lt;br /&gt;
        20 RESEARCH             7902 FORD       ANALYST         7566 03-DEC-81       3000&lt;br /&gt;
        30 SALES                7499 ALLEN      SALESMAN        7698 20-FEB-81       1600        300&lt;br /&gt;
        30 SALES                7521 WARD       SALESMAN        7698 22-FEB-81       1250        500&lt;br /&gt;
        30 SALES                7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400&lt;br /&gt;
    DEPTNO DNAME               EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM&lt;br /&gt;
---------- -------------- ---------- ---------- --------- ---------- --------- ---------- ----------&lt;br /&gt;
        30 SALES                7698 BLAKE      MANAGER         7839 01-MAY-81       2850&lt;br /&gt;
        30 SALES                7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0&lt;br /&gt;
        30 SALES                7900 JAMES      CLERK           7698 03-DEC-81        950&lt;br /&gt;
14 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table dept cascade constraint;&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; drop table dept_and_emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type emp_tab_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type emp_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Using Object Types to Define Column Objects and Object Tables==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;You can use an object type to define a column in a table.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The column is known as a column object.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If an object type contains an embedded object type, that embedded object type is also a column object.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The following example creates a table that contains a column object of EmployeeType.&amp;lt;/p&amp;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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE Or Replace TYPE EmployeeType AS OBJECT (&lt;br /&gt;
  2    id          NUMBER,&lt;br /&gt;
  3    name        VARCHAR2(15),&lt;br /&gt;
  4    description VARCHAR2(22),&lt;br /&gt;
  5    salary       NUMBER(5, 2)&lt;br /&gt;
  6  );&lt;br /&gt;
  7  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; CREATE TABLE employee (&lt;br /&gt;
  2    employee           EmployeeType,&lt;br /&gt;
  3    count NUMBER&lt;br /&gt;
  4  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; /&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; desc employee;&lt;br /&gt;
 Name               Null?    Type&lt;br /&gt;
 EMPLOYEE                    EMPLOYEETYPE&lt;br /&gt;
   ID                        NUMBER&lt;br /&gt;
   NAME                      VARCHAR2(15)&lt;br /&gt;
   DESCRIPTION               VARCHAR2(22)&lt;br /&gt;
   SALARY                    NUMBER(5,2)&lt;br /&gt;
 COUNT                       NUMBER&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Using UPDATE with TYPEed Columns==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;To use UPDATE, the alias must also be used:&amp;lt;/p&amp;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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE ADDRESS_OBJ as OBJECT(&lt;br /&gt;
  2  street VARCHAR2(20),&lt;br /&gt;
  3  city VARCHAR2(20),&lt;br /&gt;
  4  state CHAR(2),&lt;br /&gt;
  5  zip CHAR(5))&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE emp (&lt;br /&gt;
  2  empno NUMBER(3),&lt;br /&gt;
  3  name VARCHAR2(20),&lt;br /&gt;
  4  address ADDRESS_OBJ)&lt;br /&gt;
  5  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp VALUES (101, &amp;quot;A&amp;quot;,ADDRESS_OBJ(&amp;quot;1 St.&amp;quot;,&amp;quot;M&amp;quot;,&amp;quot;AL&amp;quot;,&amp;quot;36608&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from emp;&lt;br /&gt;
     EMPNO NAME                 ADDRESS(STREET, CITY, STATE, ZIP)&lt;br /&gt;
---------- -------------------- --------------------------------------------------&lt;br /&gt;
       101 A                    ADDRESS_OBJ(&amp;quot;1 St.&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;AL&amp;quot;, &amp;quot;36608&amp;quot;)&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE emp e&lt;br /&gt;
  2  SET e.address.zip = &amp;quot;34210&amp;quot;&lt;br /&gt;
  3  WHERE e.address.city LIKE &amp;quot;A%&amp;quot;&lt;br /&gt;
  4&lt;br /&gt;
SQL&amp;gt; select * from emp;&lt;br /&gt;
     EMPNO NAME                 ADDRESS(STREET, CITY, STATE, ZIP)&lt;br /&gt;
---------- -------------------- --------------------------------------------------&lt;br /&gt;
       101 A                    ADDRESS_OBJ(&amp;quot;1 St.&amp;quot;, &amp;quot;M&amp;quot;, &amp;quot;AL&amp;quot;, &amp;quot;36608&amp;quot;)&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; drop type ADDRESS_OBJ;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== You can use an object type to define an entire table, and the table is known as an object 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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE or replace TYPE EmployeeType AS OBJECT (&lt;br /&gt;
  2    id          NUMBER,&lt;br /&gt;
  3    name        VARCHAR2(15),&lt;br /&gt;
  4    description VARCHAR2(22),&lt;br /&gt;
  5    salary       NUMBER(5, 2)&lt;br /&gt;
  6  );&lt;br /&gt;
  7  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; CREATE TABLE object_employee OF EmployeeType;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; desc object_employee;&lt;br /&gt;
 Name                Null?    Type&lt;br /&gt;
 ID                           NUMBER&lt;br /&gt;
 NAME                         VARCHAR2(15)&lt;br /&gt;
 DESCRIPTION                  VARCHAR2(22)&lt;br /&gt;
 SALARY                       NUMBER(5,2)&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table object_employee;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>