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

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Column&amp;diff=2655&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Column&amp;diff=2655&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://sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Column&amp;diff=2656&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Object_Column&amp;diff=2656&amp;oldid=prev"/>
				<updated>2010-05-26T10:02: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;==Alter a table with user-defined object to upgrade including data==&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  /&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 person_table(&lt;br /&gt;
  2   name person,&lt;br /&gt;
  3   age 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;&lt;br /&gt;
SQL&amp;gt; alter table person_table upgrade including data;&lt;br /&gt;
Table altered.&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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type person;&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;
    &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;
==Check object 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;
     &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type address_type&lt;br /&gt;
  2    as object&lt;br /&gt;
  3    ( city    varchar2(30),&lt;br /&gt;
  4      street  varchar2(30),&lt;br /&gt;
  5      state   varchar2(2),&lt;br /&gt;
  6      zip     number&lt;br /&gt;
  7    )&lt;br /&gt;
  8  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create or replace type person_type&lt;br /&gt;
  2    as object&lt;br /&gt;
  3    ( name             varchar2(30),&lt;br /&gt;
  4      dob              date,&lt;br /&gt;
  5      home_address     address_type,&lt;br /&gt;
  6      work_address     address_type&lt;br /&gt;
  7    )&lt;br /&gt;
  8  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; create table people1 of person_type&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; desc people1&lt;br /&gt;
 Name                                                                                Null?    Type&lt;br /&gt;
 ----------------------------------------------------------------------------------- -------- --------------------------------------------------------&lt;br /&gt;
 NAME                                                                                         VARCHAR2(30)&lt;br /&gt;
 DOB                                                                                          DATE&lt;br /&gt;
 HOME_ADDRESS                                                                                 ADDRESS_TYPE&lt;br /&gt;
 WORK_ADDRESS                                                                                 ADDRESS_TYPE&lt;br /&gt;
SQL&amp;gt; select name, segcollength&lt;br /&gt;
  2      from sys.col$&lt;br /&gt;
  3      where obj# = ( select object_id&lt;br /&gt;
  4                      from user_objects&lt;br /&gt;
  5                      where object_name = &amp;quot;PEOPLE1&amp;quot; )&lt;br /&gt;
  6  /&lt;br /&gt;
NAME                 SEGCOLLENGTH&lt;br /&gt;
-------------------- ------------&lt;br /&gt;
SYS_NC_OID$                    16&lt;br /&gt;
SYS_NC_ROWINFO$                 1&lt;br /&gt;
NAME                           30&lt;br /&gt;
DOB                             7&lt;br /&gt;
HOME_ADDRESS                    1&lt;br /&gt;
SYS_NC00006$                   30&lt;br /&gt;
SYS_NC00007$                   30&lt;br /&gt;
SYS_NC00008$                    2&lt;br /&gt;
SYS_NC00009$                   22&lt;br /&gt;
WORK_ADDRESS                    1&lt;br /&gt;
SYS_NC00011$                   30&lt;br /&gt;
SYS_NC00012$                   30&lt;br /&gt;
SYS_NC00013$                    2&lt;br /&gt;
SYS_NC00014$                   22&lt;br /&gt;
14 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table people1;&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.&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;
==Format column in 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;
&lt;br /&gt;
SQL&amp;gt; -- Use discrete attribute names&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;&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;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO emp VALUES (101, &amp;quot;Adam&amp;quot;, ADDRESS_OBJ(&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; COLUMN name FORMAT a9&lt;br /&gt;
SQL&amp;gt; COLUMN empno FORMAT 999999&lt;br /&gt;
SQL&amp;gt; COLUMN address FORMAT a50&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT empno, name, address FROM emp;&lt;br /&gt;
  EMPNO NAME      ADDRESS(STREET, CITY, STATE, ZIP)&lt;br /&gt;
------- --------- --------------------------------------------------&lt;br /&gt;
    101 Adam      ADDRESS_OBJ(&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; drop table emp;&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;
    &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 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;
    &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;&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;
==Query column with user-defined 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 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 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; 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 as table of emp_type;&lt;br /&gt;
  2  /&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;&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 from emp ) AS emp_tab_type )&lt;br /&gt;
  4      from dept&lt;br /&gt;
  5  /&lt;br /&gt;
4 rows created.&lt;br /&gt;
SQL&amp;gt; select deptno, dname, loc, d.emps AS employees&lt;br /&gt;
  2    from dept_and_emp d&lt;br /&gt;
  3    where deptno = 10&lt;br /&gt;
  4  /&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table dept cascade constraints;&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; --&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;
==Reference nested data type in select statement==&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; create type addressType as object&lt;br /&gt;
  2  (Street   VARCHAR2(50),&lt;br /&gt;
  3  City      VARCHAR2(25),&lt;br /&gt;
  4  State     CHAR(2),&lt;br /&gt;
  5  Zip       NUMBER);&lt;br /&gt;
  6  /&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create type personType as object&lt;br /&gt;
  2  (Name     VARCHAR2(25),&lt;br /&gt;
  3   Address  addressType);&lt;br /&gt;
  4  /&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type personType as object&lt;br /&gt;
  2  (Name     VARCHAR2(25),&lt;br /&gt;
  3   Address  addressType);&lt;br /&gt;
  4  /&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table myemp&lt;br /&gt;
  2  (cid    NUMBER,&lt;br /&gt;
  3   Person         personType);&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into myemp values&lt;br /&gt;
  2  (1,personType(&amp;quot;SomeName&amp;quot;,&lt;br /&gt;
  3     addressType(&amp;quot;StreetValue&amp;quot;,&amp;quot;CityValue&amp;quot;,&amp;quot;ST&amp;quot;,11111)));&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select C.Person.Name,&lt;br /&gt;
  2         C.Person.Address.City&lt;br /&gt;
  3    from myemp C&lt;br /&gt;
  4   where C.Person.Address.City like &amp;quot;C%&amp;quot;;&lt;br /&gt;
                                                              &lt;br /&gt;
PERSON.NAME                PERSON.ADDRESS.CITY&lt;br /&gt;
-------------------------  -------------------------&lt;br /&gt;
SomeName                   CityValue&lt;br /&gt;
                   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myemp;&lt;br /&gt;
SQL&amp;gt; drop type personType;&lt;br /&gt;
SQL&amp;gt; drop type addressType;&lt;br /&gt;
SQL&amp;gt;&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;
==Reference 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;
    &lt;br /&gt;
SQL&amp;gt; CREATE or replace TYPE BookType;&lt;br /&gt;
  2  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; PROMPT Now we can create ProductType successfully&lt;br /&gt;
Now we can create ProductType successfully&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE ProductType AS OBJECT (&lt;br /&gt;
  2     item_id        NUMBER(10),&lt;br /&gt;
  3     num_in_stock   NUMBER(10),&lt;br /&gt;
  4     reorder_status VARCHAR2(20),&lt;br /&gt;
  5     price       REF   BookType);&lt;br /&gt;
  6  /&lt;br /&gt;
Type created.&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;
==The Object Type Column 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;
    &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; CREATE TABLE emp (empno   NUMBER(3),&lt;br /&gt;
  2                    name    VARCHAR2(20),&lt;br /&gt;
  3                    address ADDRESS_OBJ);&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 emp VALUES (101, &amp;quot;Adam&amp;quot;, ADDRESS_OBJ(&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&lt;br /&gt;
---------- --------------------&lt;br /&gt;
ADDRESS(STREET, CITY, STATE, ZIP)&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
       101 Adam&lt;br /&gt;
ADDRESS_OBJ(&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;
&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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&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;
==This script demonstrates column 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;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET SERVEROUTPUT ON SIZE 1000000&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BookType AS OBJECT (&lt;br /&gt;
  2     rebate   NUMBER (10, 4),&lt;br /&gt;
  3     price           NUMBER (10, 2),&lt;br /&gt;
  4     MEMBER FUNCTION discount_price&lt;br /&gt;
  5        RETURN NUMBER&lt;br /&gt;
  6  )&lt;br /&gt;
  7  INSTANTIABLE FINAL;&lt;br /&gt;
  8  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY BookType&lt;br /&gt;
  2  AS&lt;br /&gt;
  3     MEMBER FUNCTION discount_price&lt;br /&gt;
  4        RETURN NUMBER&lt;br /&gt;
  5     IS&lt;br /&gt;
  6     BEGIN&lt;br /&gt;
  7        RETURN (SELF.price * (1 - SELF.rebate));&lt;br /&gt;
  8     END discount_price;&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE bookTable (&lt;br /&gt;
  2      item_id NUMBER(10) PRIMARY KEY,&lt;br /&gt;
  3      num_in_stock NUMBER(10),&lt;br /&gt;
  4      reorder_status VARCHAR2(20 CHAR),&lt;br /&gt;
  5      price BookType&lt;br /&gt;
  6  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO bookTable VALUES (1, 10, &amp;quot;IN STOCK&amp;quot;, BookType (.1, 75));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; commit;&lt;br /&gt;
Commit complete.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     v_price   BookType;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4     SELECT price INTO v_price FROM bookTable WHERE item_id = 1;&lt;br /&gt;
  5&lt;br /&gt;
  6     DBMS_OUTPUT.put_line (&amp;quot;Price BEFORE update: &amp;quot; || v_price.discount_price);&lt;br /&gt;
  7     v_price.rebate := .2;&lt;br /&gt;
  8&lt;br /&gt;
  9     UPDATE bookTable SET price = v_price;&lt;br /&gt;
 10&lt;br /&gt;
 11     DBMS_OUTPUT.put_line (&amp;quot;Price AFTER update: &amp;quot; || v_price.discount_price);&lt;br /&gt;
 12     ROLLBACK;&lt;br /&gt;
 13  END;&lt;br /&gt;
 14  /&lt;br /&gt;
Price BEFORE update: 67.5&lt;br /&gt;
Price AFTER update: 60&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT i.price.price, i.price.rebate FROM bookTable i;&lt;br /&gt;
PRICE.PRICE PRICE.REBATE&lt;br /&gt;
----------- ------------&lt;br /&gt;
         75           .1&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT i.price.discount_price() FROM bookTable i;&lt;br /&gt;
I.PRICE.DISCOUNT_PRICE()&lt;br /&gt;
------------------------&lt;br /&gt;
                    67.5&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table bookTable;&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;
==use user-defined type as the 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 table dept&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    );&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 emp&lt;br /&gt;
  2    (empno       number(4) primary key,&lt;br /&gt;
  3     ename       varchar2(10),&lt;br /&gt;
  4     job         varchar2(9),&lt;br /&gt;
  5     mgr         number(4) references emp,&lt;br /&gt;
  6     hiredate    date,&lt;br /&gt;
  7     sal         number(7, 2),&lt;br /&gt;
  8     comm        number(7, 2),&lt;br /&gt;
  9     deptno      number(2) references dept&lt;br /&gt;
 10    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&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;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_tab_type as table of emp_type;&lt;br /&gt;
  2  /&lt;br /&gt;
&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;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table dept_and_emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table emp cascade constraints;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table dept cascade constraints;&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;&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;
==Use varray in 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; CREATE or replace TYPE addressType AS OBJECT (&lt;br /&gt;
  2    street VARCHAR2(15),&lt;br /&gt;
  3    city   VARCHAR2(15),&lt;br /&gt;
  4    state  CHAR(2),&lt;br /&gt;
  5    zip    VARCHAR2(5)&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; CREATE or replace TYPE addressTypeVArray AS VARRAY(2) OF VARCHAR2(50);&lt;br /&gt;
  2  /&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE or replace TYPE addressTypeNestedTable AS TABLE OF addressType;&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 GLOBAL TEMPORARY TABLE empTempTable (&lt;br /&gt;
  2    id         INTEGER PRIMARY KEY,&lt;br /&gt;
  3    fname VARCHAR2(10),&lt;br /&gt;
  4    lname  VARCHAR2(10),&lt;br /&gt;
  5    addresses  addressTypeVArray&lt;br /&gt;
  6  );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE empTable (&lt;br /&gt;
  2    id         INTEGER PRIMARY KEY,&lt;br /&gt;
  3    fname VARCHAR2(10),&lt;br /&gt;
  4    lname  VARCHAR2(10),&lt;br /&gt;
  5    addresses  addressTypeNestedTable&lt;br /&gt;
  6  )&lt;br /&gt;
  7  NESTED TABLE&lt;br /&gt;
  8    addresses&lt;br /&gt;
  9  STORE AS&lt;br /&gt;
 10    nested_addresses2 TABLESPACE users;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- equal/not equal example&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE equal_example AS&lt;br /&gt;
  2    TYPE charTable IS TABLE OF VARCHAR2(10);&lt;br /&gt;
  3    emp1 charTable;&lt;br /&gt;
  4    emp2 charTable;&lt;br /&gt;
  5    emp3 charTable;&lt;br /&gt;
  6    result BOOLEAN;&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8    emp1 := charTable(&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;);&lt;br /&gt;
  9    emp2 := charTable(&amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;);&lt;br /&gt;
 10    emp3 := charTable(&amp;quot;B&amp;quot;, &amp;quot;C&amp;quot;, &amp;quot;D&amp;quot;);&lt;br /&gt;
 11&lt;br /&gt;
 12    result := emp1 = emp2;&lt;br /&gt;
 13    IF result THEN&lt;br /&gt;
 14      DBMS_OUTPUT.PUT_LINE(&amp;quot;emp1 equal to emp2&amp;quot;);&lt;br /&gt;
 15    END IF;&lt;br /&gt;
 16&lt;br /&gt;
 17  END equal_example;&lt;br /&gt;
 18  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type addressType force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type addressTypeVArray force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop TYPE addressTypeNestedTable force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop TABLE empTable;&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;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>