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

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

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Ref&amp;diff=2712&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Object_Oriented_Database/Ref&amp;diff=2712&amp;oldid=prev"/>
				<updated>2010-05-26T10:02:45Z</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;==Column &amp;quot;REF&amp;quot; an object 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 AS OBJECT (&lt;br /&gt;
  2    street_1      VARCHAR2(40),&lt;br /&gt;
  3    street_2      VARCHAR2(40),&lt;br /&gt;
  4    city          VARCHAR2(40),&lt;br /&gt;
  5    state_abbr    VARCHAR2(2),&lt;br /&gt;
  6    zip_code      VARCHAR2(5),&lt;br /&gt;
  7    phone_number  VARCHAR2(10),&lt;br /&gt;
  8    MEMBER PROCEDURE ChangeAddress (&lt;br /&gt;
  9      st_1 IN VARCHAR2, st_2 IN VARCHAR2, cty IN VARCHAR2,&lt;br /&gt;
 10      state IN VARCHAR2, zip IN VARCHAR2),&lt;br /&gt;
 11    MEMBER FUNCTION getStreet (line_no IN number) RETURN VARCHAR2,&lt;br /&gt;
 12    MEMBER FUNCTION getCity RETURN VARCHAR2,&lt;br /&gt;
 13    MEMBER FUNCTION getStateAbbr RETURN VARCHAR2,&lt;br /&gt;
 14    MEMBER FUNCTION getPostalCode RETURN VARCHAR2,&lt;br /&gt;
 15    MEMBER FUNCTION getPhone RETURN VARCHAR2,&lt;br /&gt;
 16    MEMBER PROCEDURE setPhone (newPhone IN VARCHAR2)&lt;br /&gt;
 17  );&lt;br /&gt;
 18  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE BODY address AS&lt;br /&gt;
  2    MEMBER PROCEDURE ChangeAddress (&lt;br /&gt;
  3      st_1 IN VARCHAR2, st_2 IN VARCHAR2, cty IN VARCHAR2,&lt;br /&gt;
  4      state IN VARCHAR2, zip IN VARCHAR2) IS&lt;br /&gt;
  5    BEGIN&lt;br /&gt;
  6      IF (st_1 IS NULL) OR (cty IS NULL) OR&lt;br /&gt;
  7         (state IS NULL) OR (zip IS NULL)&lt;br /&gt;
  8         OR (upper(state) NOT IN (&amp;quot;AK&amp;quot;,&amp;quot;AL&amp;quot;,&amp;quot;AR&amp;quot;,&amp;quot;AZ&amp;quot;,&amp;quot;CA&amp;quot;,&amp;quot;CO&amp;quot;,&lt;br /&gt;
  9                                  &amp;quot;CT&amp;quot;,&amp;quot;DC&amp;quot;,&amp;quot;DE&amp;quot;,&amp;quot;FL&amp;quot;,&amp;quot;GA&amp;quot;,&amp;quot;HI&amp;quot;,&lt;br /&gt;
 10                                  &amp;quot;IA&amp;quot;,&amp;quot;ID&amp;quot;,&amp;quot;IL&amp;quot;,&amp;quot;IN&amp;quot;,&amp;quot;KS&amp;quot;,&amp;quot;KY&amp;quot;,&lt;br /&gt;
 11                                  &amp;quot;LA&amp;quot;,&amp;quot;MA&amp;quot;,&amp;quot;MD&amp;quot;,&amp;quot;ME&amp;quot;,&amp;quot;MI&amp;quot;,&amp;quot;MN&amp;quot;,&lt;br /&gt;
 12                                  &amp;quot;MO&amp;quot;,&amp;quot;MS&amp;quot;,&amp;quot;MT&amp;quot;,&amp;quot;NC&amp;quot;,&amp;quot;ND&amp;quot;,&amp;quot;NE&amp;quot;,&lt;br /&gt;
 13                                  &amp;quot;NH&amp;quot;,&amp;quot;NJ&amp;quot;,&amp;quot;NM&amp;quot;,&amp;quot;NV&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;OH&amp;quot;,&lt;br /&gt;
 14                                  &amp;quot;OK&amp;quot;,&amp;quot;OR&amp;quot;,&amp;quot;PA&amp;quot;,&amp;quot;RI&amp;quot;,&amp;quot;SC&amp;quot;,&amp;quot;SD&amp;quot;,&lt;br /&gt;
 15                                  &amp;quot;TN&amp;quot;,&amp;quot;TX&amp;quot;,&amp;quot;UT&amp;quot;,&amp;quot;VA&amp;quot;,&amp;quot;VT&amp;quot;,&amp;quot;WA&amp;quot;,&lt;br /&gt;
 16                                  &amp;quot;WI&amp;quot;,&amp;quot;WV&amp;quot;,&amp;quot;WY&amp;quot;))&lt;br /&gt;
 17  OR (zip &amp;lt;&amp;gt; ltrim(to_char(to_number(zip),&amp;quot;09999&amp;quot;))) THEN&lt;br /&gt;
 18       RAISE_application_error(-20001,&amp;quot;The new Address is invalid.&amp;quot;);&lt;br /&gt;
 19      ELSE&lt;br /&gt;
 20        street_1 := st_1;&lt;br /&gt;
 21        street_2 := st_2;&lt;br /&gt;
 22        city := cty;&lt;br /&gt;
 23        state_abbr := upper(state);&lt;br /&gt;
 24        zip_code := zip;&lt;br /&gt;
 25      END IF;&lt;br /&gt;
 26    END;&lt;br /&gt;
 27&lt;br /&gt;
 28    MEMBER FUNCTION getStreet (line_no IN number)&lt;br /&gt;
 29      RETURN VARCHAR2 IS&lt;br /&gt;
 30    BEGIN&lt;br /&gt;
 31      IF line_no = 1 THEN&lt;br /&gt;
 32        RETURN street_1;&lt;br /&gt;
 33      ELSIF line_no = 2 THEN&lt;br /&gt;
 34        RETURN street_2;&lt;br /&gt;
 35      ELSE&lt;br /&gt;
 36        RETURN &amp;quot; &amp;quot;;   &lt;br /&gt;
 37      END IF;&lt;br /&gt;
 38    END;&lt;br /&gt;
 39&lt;br /&gt;
 40    MEMBER FUNCTION getCity RETURN VARCHAR2 IS&lt;br /&gt;
 41    BEGIN&lt;br /&gt;
 42      RETURN city;&lt;br /&gt;
 43    END;&lt;br /&gt;
 44&lt;br /&gt;
 45    MEMBER FUNCTION getStateAbbr RETURN VARCHAR2 IS&lt;br /&gt;
 46    BEGIN&lt;br /&gt;
 47      RETURN state_abbr;&lt;br /&gt;
 48    END;&lt;br /&gt;
 49&lt;br /&gt;
 50    MEMBER FUNCTION getPostalCode RETURN VARCHAR2 IS&lt;br /&gt;
 51    BEGIN&lt;br /&gt;
 52      RETURN zip_code;&lt;br /&gt;
 53    END;&lt;br /&gt;
 54&lt;br /&gt;
 55    MEMBER FUNCTION getPhone RETURN VARCHAR2 IS&lt;br /&gt;
 56    BEGIN&lt;br /&gt;
 57      RETURN phone_number;&lt;br /&gt;
 58    END;&lt;br /&gt;
 59&lt;br /&gt;
 60    MEMBER PROCEDURE setPhone (newPhone IN VARCHAR2) IS&lt;br /&gt;
 61    BEGIN&lt;br /&gt;
 62      phone_number := newPhone;&lt;br /&gt;
 63    END;&lt;br /&gt;
 64  END;&lt;br /&gt;
 65  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt; set echo on&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE appartment AS OBJECT (&lt;br /&gt;
  2    BldgName          VARCHAR2(40),&lt;br /&gt;
  3    BldgAddress       address,&lt;br /&gt;
  4    BldgMgr           INTEGER,&lt;br /&gt;
  5    MEMBER PROCEDURE  ChangeMgr (NewMgr IN INTEGER),&lt;br /&gt;
  6    ORDER MEMBER FUNCTION Compare (OtherAppartment IN appartment)&lt;br /&gt;
  7        RETURN INTEGER&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; CREATE OR REPLACE TYPE BODY appartment AS&lt;br /&gt;
  2    MEMBER PROCEDURE  ChangeMgr(NewMgr IN INTEGER) IS&lt;br /&gt;
  3      BEGIN&lt;br /&gt;
  4        BldgMgr := NewMgr;&lt;br /&gt;
  5      END;&lt;br /&gt;
  6&lt;br /&gt;
  7    ORDER MEMBER FUNCTION Compare (OtherAppartment IN appartment)&lt;br /&gt;
  8    RETURN INTEGER IS&lt;br /&gt;
  9        BldgName1     VARCHAR2(40);&lt;br /&gt;
 10        BldgName2     VARCHAR2(40);&lt;br /&gt;
 11      BEGIN&lt;br /&gt;
 12        BldgName1 := upper(ltrim(rtrim(BldgName)));&lt;br /&gt;
 13        BldgName2 := upper(ltrim(rtrim(OtherAppartment.BldgName)));&lt;br /&gt;
 14&lt;br /&gt;
 15        IF BldgName1 = BldgName2 THEN&lt;br /&gt;
 16          RETURN 0;&lt;br /&gt;
 17        ELSIF BldgName1 &amp;lt; BldgName2 THEN&lt;br /&gt;
 18          RETURN -1;&lt;br /&gt;
 19        ELSE&lt;br /&gt;
 20          RETURN 1;&lt;br /&gt;
 21        END IF;&lt;br /&gt;
 22      END;&lt;br /&gt;
 23  END;&lt;br /&gt;
 24  /&lt;br /&gt;
Type body created.&lt;br /&gt;
SQL&amp;gt; CREATE TABLE employee(&lt;br /&gt;
  2           emp_id           INTEGER,&lt;br /&gt;
  3           emp_name         VARCHAR2(32),&lt;br /&gt;
  4           supervised_by    INTEGER,&lt;br /&gt;
  5           pay_rate         NUMBER(9,2),&lt;br /&gt;
  6           pay_type         CHAR,&lt;br /&gt;
  7           emp_bldg         REF appartment);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type appartment;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Create table with ref==&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 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 address_table OF ADDRESS_OBJ;&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 address_obj 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; INSERT INTO client SELECT &amp;quot;Walsh&amp;quot;, REF(aa) FROM address_table aa;&lt;br /&gt;
0 rows created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- SELECTing Individual Columns in TCROs&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT c.name, c.address.city 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;&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 table address_table;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
           &lt;br /&gt;
         &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Delete records==&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 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 address_table OF ADDRESS_OBJ;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO address_table VALUES (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; CREATE TABLE client (name VARCHAR2(20),&lt;br /&gt;
  2    address REF address_obj scope is address_table);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO client SELECT &amp;quot;Walsh&amp;quot;, REF(aa) FROM address_table aa;&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- SELECTing Individual Columns in TCROs&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- Deleting Referenced Rows&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * FROM address_table;&lt;br /&gt;
STREET               CITY                 ST ZIP&lt;br /&gt;
-------------------- -------------------- -- -----&lt;br /&gt;
1 A St.              Mobile               AL 36608&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- Now delete a row from Address_table:&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DELETE FROM address_table WHERE zip = &amp;quot;32563&amp;quot;;&lt;br /&gt;
0 rows deleted.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- And now, SELECT from the Client table that contains a reference to the Address_table:&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * FROM client;&lt;br /&gt;
NAME      ADDRESS&lt;br /&gt;
--------- --------------------------------------------------&lt;br /&gt;
Walsh     0000220208707EBDF1B9E344FDB604B14DA624CBA048316BEA&lt;br /&gt;
          1E2D4128AC1F28472E126764&lt;br /&gt;
&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;
NAME&lt;br /&gt;
---------&lt;br /&gt;
DEREF(ADDRESS)(STREET, CITY, STATE, ZIP)&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
Walsh&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;&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 table address_table;&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;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Insert with ref==&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 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 address_table OF ADDRESS_OBJ;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO address_table VALUES (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; CREATE TABLE client (name VARCHAR2(20),&lt;br /&gt;
  2    address REF address_obj 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; INSERT INTO client SELECT &amp;quot;Walsh&amp;quot;, REF(aa) FROM address_table aa;&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- SELECTing Individual Columns in TCROs&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT c.name, c.address.city FROM client c;&lt;br /&gt;
NAME      ADDRESS.CITY&lt;br /&gt;
--------- --------------------&lt;br /&gt;
Walsh     Mobile&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 client;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table address_table;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&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;
==List to list using object references==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE bookType AS OBJECT&lt;br /&gt;
  2     (book_id          VARCHAR2(10),&lt;br /&gt;
  3      book_title       VARCHAR2(30))&lt;br /&gt;
  4  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TYPE authorType AS OBJECT&lt;br /&gt;
  2     (author_id        VARCHAR2(10),&lt;br /&gt;
  3      author_name      VARCHAR2(30))&lt;br /&gt;
  4  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Book OF bookType&lt;br /&gt;
  2     (book_id NOT NULL,&lt;br /&gt;
  3      PRIMARY KEY (book_id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Author OF authorType&lt;br /&gt;
  2     (author_id NOT NULL,&lt;br /&gt;
  3      PRIMARY KEY (author_id));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Write&lt;br /&gt;
  2     (Book             REF bookType,&lt;br /&gt;
  3      Index_Book       NUMBER NOT NULL,&lt;br /&gt;
  4      Author           REF authorType);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE Written_By&lt;br /&gt;
  2     (Author           REF authorType,&lt;br /&gt;
  3      Index_Author     NUMBER NOT NULL,&lt;br /&gt;
  4      Book             REF bookType);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type bookType force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt; drop type authorType force;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table Book;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table Author;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table Write;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table Written_By;&lt;br /&gt;
Table dropped.&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MAKE_REF and user view==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create 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; 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; create table emp&lt;br /&gt;
  2  (cid NUMBER   primary key,&lt;br /&gt;
  3   Name        VARCHAR2(25),&lt;br /&gt;
  4   Street      VARCHAR2(50),&lt;br /&gt;
  5   City        VARCHAR2(25),&lt;br /&gt;
  6   State       CHAR(2),&lt;br /&gt;
  7   Zip         NUMBER);&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type empType as object&lt;br /&gt;
  2  (cid NUMBER,&lt;br /&gt;
  3   Name        VARCHAR2(25),&lt;br /&gt;
  4   Street      VARCHAR2(50),&lt;br /&gt;
  5   City        VARCHAR2(25),&lt;br /&gt;
  6   State       CHAR(2),&lt;br /&gt;
  7   Zip         NUMBER);&lt;br /&gt;
  8  /&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create view empView of empType&lt;br /&gt;
  2  with object OID (cid) as&lt;br /&gt;
  3  select cid, Name, Street, City, State, Zip&lt;br /&gt;
  4  from emp;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table emp_CALL&lt;br /&gt;
  2  (cid   NUMBER,&lt;br /&gt;
  3   Call_Number   NUMBER,&lt;br /&gt;
  4   Call_Date     DATE,&lt;br /&gt;
  5   constraint emp_CALL_PK primary key (cid, Call_Number),&lt;br /&gt;
  6   constraint emp_CALL_FK foreign key (cid)references emp(cid));&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create view empCallView as&lt;br /&gt;
  2  select MAKE_REF(empView, cid) cid,&lt;br /&gt;
  3         Call_Number,&lt;br /&gt;
  4         Call_Date&lt;br /&gt;
  5    from emp_CALL;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select DEREF(CCOV.cid)&lt;br /&gt;
  2    from empCallView CCOV&lt;br /&gt;
  3   where Call_Date = TRUNC(SysDate);&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop view empCallView;&lt;br /&gt;
SQL&amp;gt; drop view empView;&lt;br /&gt;
SQL&amp;gt; drop table emp_CALL;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type personType;&lt;br /&gt;
SQL&amp;gt;&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;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>