Oracle PL/SQL/Object Oriented Database/Reference Object

Материал из SQL эксперт
Перейти к: навигация, поиск

CREATE a Table that References Our Row Objects

SQL> -- CREATE a Table that References Our Row Objects
SQL>
SQL>
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> CREATE TABLE client (name VARCHAR2(20),
  2    address REF address_obj scope is address_table);
Table created.
SQL>
SQL>
SQL> DESC client;
 Name                                                                                                  Null?    Type
 ----------------------------------------------------------------------------------------------------- -------- --------------------------------------------------------------------
 NAME                                                                                                   VARCHAR2(20)
 ADDRESS                                                                                                REF OF ADDRESS_OBJ
SQL>
SQL> drop table client;
Table dropped.
SQL>
SQL> drop table address_table;
Table dropped.
SQL>
SQL>
SQL>



Create Row Objects REF TYPE

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 Row Objects REF TYPE
SQL>
SQL> -- Create a table that contains only the address objects:
SQL>
SQL> CREATE TABLE address_table OF ADDRESS_OBJ;
Table created.
SQL>
SQL> SELECT * FROM address_table;
no rows selected
SQL>
SQL> drop table address_table;
Table dropped.
SQL>
SQL>



Use discrete attribute names

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> CREATE TABLE emp (empno   NUMBER(3),
  2                    name    VARCHAR2(20),
  3                    address ADDRESS_OBJ);
Table created.
SQL>
SQL>
SQL> INSERT INTO emp VALUES (101, "Adam", ADDRESS_OBJ("1 A St.","Mobile","AL","36608"));
1 row created.
SQL>
SQL> SELECT * FROM emp;
     EMPNO NAME
---------- --------------------
ADDRESS(STREET, CITY, STATE, ZIP)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       101 Adam
ADDRESS_OBJ("1 A St.", "Mobile", "AL", "36608")

SQL>
SQL>
SQL> drop table emp;
Table dropped.
SQL>
SQL>
SQL>