<?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_Table</id>
		<title>Oracle PL/SQL Tutorial/Object Oriented/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_Tutorial%2FObject_Oriented%2FObject_Table"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Object_Oriented/Object_Table&amp;action=history"/>
		<updated>2026-05-24T12:15:42Z</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_Table&amp;diff=2982&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_Table&amp;diff=2982&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_Table&amp;diff=2983&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_Table&amp;diff=2983&amp;oldid=prev"/>
				<updated>2010-05-26T10:04:44Z</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;== Accessing the object table by reference==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The built-in function ref returns a pointer to the object.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The variable you need to declare is not of type employeeType, but ref 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;&lt;br /&gt;
SQL&amp;gt; create type employeeType is object (&lt;br /&gt;
  2      empNo    NUMBER,&lt;br /&gt;
  3      eName    VARCHAR2(10),&lt;br /&gt;
  4      job      VARCHAR2(9),&lt;br /&gt;
  5      mgr      NUMBER,&lt;br /&gt;
  6      hireDate DATE,&lt;br /&gt;
  7      sal      NUMBER,&lt;br /&gt;
  8      comm     NUMBER,&lt;br /&gt;
  9      deptNo   NUMBER,&lt;br /&gt;
 10      member procedure p_changeName (i_newName_tx VARCHAR2),&lt;br /&gt;
 11      member function  f_getIncome_nr  return VARCHAR2&lt;br /&gt;
 12  )&lt;br /&gt;
 13  /&lt;br /&gt;
SP2-0816: Type created with compilation warnings&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type body employeeType as&lt;br /&gt;
  2      member function f_getIncome_nr return VARCHAR2 is&lt;br /&gt;
  3      begin&lt;br /&gt;
  4          return sal+comm;&lt;br /&gt;
  5      end f_getIncome_nr;&lt;br /&gt;
  6      member procedure p_changeName(i_newName_tx VARCHAR2) is&lt;br /&gt;
  7      begin&lt;br /&gt;
  8          eName:=i_newName_tx;&lt;br /&gt;
  9      end p_changeName;&lt;br /&gt;
 10  end;&lt;br /&gt;
 11  /&lt;br /&gt;
SP2-0818: Type Body created with compilation warnings&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table t_emp of employeeType;&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; declare&lt;br /&gt;
  2      v_emp_oref ref employeeType;&lt;br /&gt;
  3      v_employeeType employeeType;&lt;br /&gt;
  4&lt;br /&gt;
  5  begin&lt;br /&gt;
  6      v_employeeType:=employeeType(100,&amp;quot;TestEmp&amp;quot;,null,null,sysdate,1000,500,10);&lt;br /&gt;
  7      insert into t_emp values v_employeeType;&lt;br /&gt;
  8&lt;br /&gt;
  9&lt;br /&gt;
 10      select ref(t) into v_emp_oref from t_emp t where empNo=100;&lt;br /&gt;
 11&lt;br /&gt;
 12      update t_emp t set sal=sal+100 where ref(t)=v_emp_oref;&lt;br /&gt;
 13  end;&lt;br /&gt;
 14  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from t_emp;&lt;br /&gt;
     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO&lt;br /&gt;
---------- ---------- --------- ---------- --------- ---------- ---------- ----------&lt;br /&gt;
       100 TestEmp                         09-JUN-07       1100        500         10&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table t_emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type employeeType;&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;
== Alter table to add a user-defined 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;&lt;br /&gt;
SQL&amp;gt; create or replace type Address_Type&lt;br /&gt;
  2  as object&lt;br /&gt;
  3  (  street_addr1   varchar2(25),&lt;br /&gt;
  4     street_addr2   varchar2(25),&lt;br /&gt;
  5     city           varchar2(30),&lt;br /&gt;
  6     state          varchar2(2),&lt;br /&gt;
  7     zip_code       number&lt;br /&gt;
  8  )&lt;br /&gt;
  9  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter type Address_Type&lt;br /&gt;
  2  REPLACE&lt;br /&gt;
  3  as object&lt;br /&gt;
  4  (  street_addr1   varchar2(25),&lt;br /&gt;
  5     street_addr2   varchar2(25),&lt;br /&gt;
  6     city           varchar2(30),&lt;br /&gt;
  7     state          varchar2(2),&lt;br /&gt;
  8     zip_code       number,&lt;br /&gt;
  9     member function toString return varchar2,&lt;br /&gt;
 10     map member function mapping_function return varchar2&lt;br /&gt;
 11  )&lt;br /&gt;
 12  /&lt;br /&gt;
Type altered.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type body Address_Type&lt;br /&gt;
  2  as&lt;br /&gt;
  3      member function toString return varchar2&lt;br /&gt;
  4      is&lt;br /&gt;
  5      begin&lt;br /&gt;
  6          if ( street_addr2 is not NULL )&lt;br /&gt;
  7          then&lt;br /&gt;
  8              return street_addr1 || &amp;quot; &amp;quot; ||&lt;br /&gt;
  9                     street_addr2 || &amp;quot; &amp;quot; ||&lt;br /&gt;
 10                     city || &amp;quot;, &amp;quot; || state || &amp;quot; &amp;quot; || zip_code;&lt;br /&gt;
 11          else&lt;br /&gt;
 12              return street_addr1 || &amp;quot; &amp;quot; ||&lt;br /&gt;
 13                     city || &amp;quot;, &amp;quot; || state || &amp;quot; &amp;quot; || zip_code;&lt;br /&gt;
 14          end if;&lt;br /&gt;
 15      end;&lt;br /&gt;
 16&lt;br /&gt;
 17      map member function mapping_function return varchar2&lt;br /&gt;
 18      is&lt;br /&gt;
 19      begin&lt;br /&gt;
 20          return to_char( nvl(zip_code,0), &amp;quot;fm00000&amp;quot; ) ||&lt;br /&gt;
 21                 lpad( nvl(city,&amp;quot; &amp;quot;), 30 ) ||&lt;br /&gt;
 22                 lpad( nvl(street_addr1,&amp;quot; &amp;quot;), 25 ) ||&lt;br /&gt;
 23                 lpad( nvl(street_addr2,&amp;quot; &amp;quot;), 25 );&lt;br /&gt;
 24      end;&lt;br /&gt;
 25  end;&lt;br /&gt;
 26  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table people&lt;br /&gt;
  2  ( name           varchar2(10),&lt;br /&gt;
  3    home_address   address_type,&lt;br /&gt;
  4    work_address   address_type&lt;br /&gt;
  5  )&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; create or replace type Address_Array_Type&lt;br /&gt;
  2  as varray(50) of Address_Type&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; alter table people add previous_addresses Address_Array_Type&lt;br /&gt;
  2  /&lt;br /&gt;
Table altered.&lt;br /&gt;
SQL&amp;gt; select name, prev.city, prev.state, prev.zip_code&lt;br /&gt;
  2    from people p, table( p.previous_addresses ) prev&lt;br /&gt;
  3   where prev.state = &amp;quot;PA&amp;quot;;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt; /&lt;br /&gt;
no rows selected&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 Address_Array_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;
== Create a table based on an Object with methods==&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 AS OBJECT&lt;br /&gt;
  2              (line1 VARCHAR2(20),&lt;br /&gt;
  3               line2 VARCHAR2(20),&lt;br /&gt;
  4               city VARCHAR2(20),&lt;br /&gt;
  5               state_code VARCHAR2(2),&lt;br /&gt;
  6               zip VARCHAR2(13),&lt;br /&gt;
  7    MEMBER FUNCTION get_address RETURN VARCHAR2,&lt;br /&gt;
  8    MEMBER PROCEDURE set_address&lt;br /&gt;
  9              (addressLine1 VARCHAR2,&lt;br /&gt;
 10               addressLine2 VARCHAR2,&lt;br /&gt;
 11               address_city VARCHAR2,&lt;br /&gt;
 12               address_state VARCHAR2,&lt;br /&gt;
 13               address_zip VARCHAR2)&lt;br /&gt;
 14  );&lt;br /&gt;
 15  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY address AS&lt;br /&gt;
  2    MEMBER FUNCTION get_address RETURN VARCHAR2&lt;br /&gt;
  3    IS&lt;br /&gt;
  4    BEGIN&lt;br /&gt;
  5      RETURN (SELF.line1||&amp;quot; &amp;quot;||SELF.line2||&amp;quot; &amp;quot;||SELF.city||&amp;quot;, &amp;quot;||SELF.state_code||&amp;quot; &amp;quot;||SELF.zip);&lt;br /&gt;
  6    END get_address;&lt;br /&gt;
  7    MEMBER PROCEDURE set_address (addressLine1 VARCHAR2,&lt;br /&gt;
  8                  addressLine2 VARCHAR2,&lt;br /&gt;
  9                  address_city VARCHAR2,&lt;br /&gt;
 10                  address_state VARCHAR2,&lt;br /&gt;
 11                  address_zip VARCHAR2)&lt;br /&gt;
 12    IS&lt;br /&gt;
 13    BEGIN&lt;br /&gt;
 14      line1 :=addressLine1;&lt;br /&gt;
 15&lt;br /&gt;
 16      line2 :=addressLine2;&lt;br /&gt;
 17&lt;br /&gt;
 18      city :=address_city;&lt;br /&gt;
 19&lt;br /&gt;
 20      state_code :=address_state;&lt;br /&gt;
 21&lt;br /&gt;
 22      zip :=address_zip;&lt;br /&gt;
 23&lt;br /&gt;
 24    END set_address;&lt;br /&gt;
 25  END;&lt;br /&gt;
 26  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE address_master OF address;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO address_master VALUES (address(&amp;quot;19 J&amp;quot;,&amp;quot;R Rd&amp;quot;,&amp;quot;Vancouver&amp;quot;,&amp;quot;NJ&amp;quot;,&amp;quot;00000&amp;quot;));&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from address_master;&lt;br /&gt;
LINE1                LINE2                CITY                 ST&lt;br /&gt;
-------------------- -------------------- -------------------- --&lt;br /&gt;
ZIP&lt;br /&gt;
-------------&lt;br /&gt;
19 J                 R Rd                 Vancouver            NJ&lt;br /&gt;
00000&lt;br /&gt;
&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table address_master;&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;
== Insert data just as one would ordinarily do with a common SQL 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 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;&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;
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;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT city&lt;br /&gt;
  2  FROM address_table;&lt;br /&gt;
CITY&lt;br /&gt;
--------------------&lt;br /&gt;
Gulf&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;&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;
== Inserting a row into 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 ProductType 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    price       NUMBER(5, 2),&lt;br /&gt;
  6    days_valid  NUMBER&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 object_products OF ProductType&lt;br /&gt;
  2  /&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 object_products VALUES (&lt;br /&gt;
  2    ProductType(1, &amp;quot;AAA&amp;quot;, &amp;quot;BBB&amp;quot;, 3.95, 10)&lt;br /&gt;
  3  );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from object_products;&lt;br /&gt;
 ID NAME            DESCRIPTION                 PRICE DAYS_VALID&lt;br /&gt;
--- --------------- ---------------------- ---------- ----------&lt;br /&gt;
  1 AAA             BBB                          3.95         10&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table object_products;&lt;br /&gt;
Table 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;
== INSERT Values into a Table that Contains Row Objects (TCRO)==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;One way to begin is to insert into the client table and null the addressType:&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;&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 address_table OF addressType&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE client (name VARCHAR2(20),&lt;br /&gt;
  2    address REF addressType scope is address_table)&lt;br /&gt;
  3  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DESC client;&lt;br /&gt;
 Name          Null?    Type&lt;br /&gt;
 ----------&lt;br /&gt;
 NAME                   VARCHAR2(20)&lt;br /&gt;
 ADDRESS                REF OF ADDRESSTYPE&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO client VALUES (&amp;quot;Jones&amp;quot;,null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT *&lt;br /&gt;
  2  FROM client;&lt;br /&gt;
NAME                 ADDRESS&lt;br /&gt;
-------------------- --------------------------------------------------&lt;br /&gt;
Jones&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 client;&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;
== One-step INSERTs into a Table that Contains 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;&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 address_table OF addressType&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE client (name VARCHAR2(20),&lt;br /&gt;
  2    address REF addressType scope is address_table);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DESC client;&lt;br /&gt;
 Name       Null?    Type&lt;br /&gt;
 ----------&lt;br /&gt;
 NAME                VARCHAR2(20)&lt;br /&gt;
 ADDRESS             REF OF ADDRESSTYPE&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO client&lt;br /&gt;
  2  SELECT &amp;quot;Walsh&amp;quot;, REF(aa)&lt;br /&gt;
  3  FROM address_table aa&lt;br /&gt;
  4  WHERE zip = &amp;quot;32563&amp;quot;;&lt;br /&gt;
0 rows created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT name, DEREF(address)&lt;br /&gt;
  2  FROM client;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from client;&lt;br /&gt;
no rows selected&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --DEREF (Dereference) the Row Addresses&lt;br /&gt;
SQL&amp;gt; SELECT name, DEREF(address)&lt;br /&gt;
  2  FROM client;&lt;br /&gt;
no rows selected&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 client;&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.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== SELECT from the object-oriented 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 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 address_table OF addressType&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE client (name VARCHAR2(20),&lt;br /&gt;
  2    address REF addressType scope is address_table);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DESC client;&lt;br /&gt;
 Name      Null?    Type&lt;br /&gt;
 ----------    &lt;br /&gt;
 NAME               VARCHAR2(20)&lt;br /&gt;
 ADDRESS            REF OF ADDRESSTYPE&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO client VALUES (&amp;quot;Jones&amp;quot;,null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT *&lt;br /&gt;
  2  FROM client;&lt;br /&gt;
NAME                 ADDRESS&lt;br /&gt;
-------------------- --------------------------------------------------&lt;br /&gt;
Jones&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE client SET address =&lt;br /&gt;
  2  (SELECT REF(aa)&lt;br /&gt;
  3  FROM address_table aa&lt;br /&gt;
  4  WHERE aa.city LIKE &amp;quot;Mob%&amp;quot;)&lt;br /&gt;
  5  WHERE name = &amp;quot;Jones&amp;quot;&lt;br /&gt;
  6&lt;br /&gt;
SQL&amp;gt; select * from client;&lt;br /&gt;
NAME                 ADDRESS&lt;br /&gt;
-------------------- --------------------------------------------------&lt;br /&gt;
Jones&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 client;&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;
== SELECTing Individual Columns in Table that Contains 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;&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 address_table OF addressType&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE client (name VARCHAR2(20),&lt;br /&gt;
  2    address REF addressType scope is address_table);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DESC client;&lt;br /&gt;
 Name      Null?    Type&lt;br /&gt;
 ---------&lt;br /&gt;
 NAME               VARCHAR2(20)&lt;br /&gt;
 ADDRESS            REF OF ADDRESSTYPE&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO client&lt;br /&gt;
  2  SELECT &amp;quot;Walsh&amp;quot;, REF(aa)&lt;br /&gt;
  3  FROM address_table aa&lt;br /&gt;
  4  WHERE zip = &amp;quot;32563&amp;quot;;&lt;br /&gt;
0 rows created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT c.name, c.address.city&lt;br /&gt;
  2  FROM client c;&lt;br /&gt;
no rows selected&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 client;&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;
== Selecting Rows from the 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 ProductType 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    price       NUMBER(5, 2),&lt;br /&gt;
  6    days_valid  NUMBER&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 object_products OF ProductType&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO object_products (&lt;br /&gt;
  2    id, name, description, price, days_valid&lt;br /&gt;
  3  ) VALUES (&lt;br /&gt;
  4    2, &amp;quot;AAA&amp;quot;, &amp;quot;BBB&amp;quot;, 2.99, 5&lt;br /&gt;
  5  );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from object_products;&lt;br /&gt;
 ID NAME            DESCRIPTION                 PRICE DAYS_VALID&lt;br /&gt;
--- --------------- ---------------------- ---------- ----------&lt;br /&gt;
  2 AAA             BBB                          2.99          5&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table object_products;&lt;br /&gt;
Table 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;
== UPDATE a Table that Contains Row Objects (TCRO)==&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 address_table OF addressType&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE client (name VARCHAR2(20),&lt;br /&gt;
  2    address REF addressType scope is address_table);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DESC client;&lt;br /&gt;
 Name        Null?    Type&lt;br /&gt;
 ----------&lt;br /&gt;
 NAME                 VARCHAR2(20)&lt;br /&gt;
 ADDRESS              REF OF ADDRESSTYPE&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO client VALUES (&amp;quot;Jones&amp;quot;,null);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT *&lt;br /&gt;
  2  FROM client;&lt;br /&gt;
NAME                 ADDRESS&lt;br /&gt;
-------------------- --------------------------------------------------&lt;br /&gt;
Jones&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE client SET address =&lt;br /&gt;
  2  (SELECT REF(aa)&lt;br /&gt;
  3  FROM address_table aa&lt;br /&gt;
  4  WHERE aa.city LIKE &amp;quot;Mob%&amp;quot;)&lt;br /&gt;
  5  WHERE name = &amp;quot;Jones&amp;quot;&lt;br /&gt;
  6&lt;br /&gt;
SQL&amp;gt; select * from client;&lt;br /&gt;
NAME                 ADDRESS&lt;br /&gt;
-------------------- --------------------------------------------------&lt;br /&gt;
Jones&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 client;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop type addresstype;&lt;br /&gt;
Type dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Updating a Row in the 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;&lt;br /&gt;
SQL&amp;gt; CREATE Or Replace TYPE ProductType 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    price       NUMBER(5, 2),&lt;br /&gt;
  6    days_valid  NUMBER&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 object_products OF ProductType&lt;br /&gt;
  2  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO object_products (&lt;br /&gt;
  2    id, name, description, price, days_valid&lt;br /&gt;
  3  ) VALUES (&lt;br /&gt;
  4    1, &amp;quot;AAA&amp;quot;, &amp;quot;BBB&amp;quot;, 2.99, 5&lt;br /&gt;
  5  );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select * from object_products;&lt;br /&gt;
 ID NAME            DESCRIPTION                 PRICE DAYS_VALID&lt;br /&gt;
--- --------------- ---------------------- ---------- ----------&lt;br /&gt;
  1 AAA             BBB                          2.99          5&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; UPDATE object_products&lt;br /&gt;
  2  SET description = &amp;quot;new&amp;quot;&lt;br /&gt;
  3  WHERE id = 1;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt; select * from object_products;&lt;br /&gt;
 ID NAME            DESCRIPTION                 PRICE DAYS_VALID&lt;br /&gt;
--- --------------- ---------------------- ---------- ----------&lt;br /&gt;
  1 AAA             new                          2.99          5&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table object_products;&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;
== You can also 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>