SQL> CREATE OR REPLACE TYPE address_obj as OBJECT(
2 street VARCHAR2(20),
3 city VARCHAR2(20),
4 state CHAR(2),
5 zip CHAR(5));
6 /
Type created.
SQL>
SQL> CREATE TABLE address_table OF ADDRESS_OBJ;
Table created.
SQL>
SQL> INSERT INTO address_table VALUES (ADDRESS_OBJ('1 A St.','Mobile','AL','36608'));
1 row created.
SQL>
SQL> CREATE TABLE client (name VARCHAR2(20),
2 address REF address_obj scope is address_table);
Table created.
SQL>
SQL> INSERT INTO client SELECT 'Walsh', REF(aa) FROM address_table aa;
1 row created.
SQL>
SQL>
SQL> -- SELECTing Individual Columns in TCROs
SQL>
SQL>
SQL>
SQL> -- Deleting Referenced Rows
SQL>
SQL>
SQL> SELECT * FROM address_table;
STREET CITY ST ZIP
-------------------- -------------------- -- -----
1 A St. Mobile AL 36608
SQL>
SQL> -- Now delete a row from Address_table:
SQL>
SQL> DELETE FROM address_table WHERE zip = '32563';
0 rows deleted.
SQL>
SQL> -- And now, SELECT from the Client table that contains a reference to the Address_table:
SQL>
SQL> SELECT * FROM client;
NAME ADDRESS
--------- --------------------------------------------------
Walsh 0000220208707EBDF1B9E344FDB604B14DA624CBA048316BEA
1E2D4128AC1F28472E126764
SQL>
SQL> SELECT name, DEREF(address)
2 FROM client;
NAME
---------
DEREF(ADDRESS)(STREET, CITY, STATE, ZIP)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Walsh
ADDRESS_OBJ('1 A St.', 'Mobile', 'AL', '36608')
SQL>
SQL>
SQL>
SQL> drop table client;
Table dropped.
SQL>
SQL> drop table address_table;
Table dropped.
SQL>
SQL>
SQL>
|