プライマリ・コンテンツに移動
Oracle® Databaseユーティリティ
12cリリース1 (12.1.0.2)
B71303-09
目次へ移動
目次
索引へ移動
索引

前
次

FINALオブジェクト型の表

オブジェクト表には、表のすべての行を一意に識別するオブジェクト識別子があります。そのため次のような問題があります。

次の手順は、前述の最後の状況の例を示します。

  1. システム生成OIDを持つ型の表を作成します。

    SQL> CREATE TYPE person AS OBJECT (name varchar2(20)) NOT FINAL
      2  /
    
    Type created.
    
    SQL> CREATE TABLE people OF person;
    
    Table created.
    
    SQL> INSERT INTO people VALUES ('Euclid');
    
    1 row created.
    
  2. システム生成OIDを含む列を保持するために、OID列を使用する外部表を作成します。

    SQL> CREATE TABLE people_xt
      2  ORGANIZATION EXTERNAL
      3  (
      4    TYPE ORACLE_DATAPUMP
      5    DEFAULT DIRECTORY def_dir1
      6    LOCATION ('people.dmp')
      7  )
      8  AS SELECT SYS_NC_OID$ oid, name FROM people;
    
    Table created.
    
  3. システム生成OIDを持つ同じ型の別の表を作成します。次にINSERT文を実行して、新しい表に古い表からアンロードされたデータをロードします。

    SQL> CREATE TABLE people2 OF person;
    
    Table created.
    
    SQL> 
    SQL> INSERT INTO people2 (SYS_NC_OID$, SYS_NC_ROWINFO$)
      2  SELECT oid, person(name) FROM people_xt;
    
    1 row created.
    
    SQL> 
    SQL> SELECT SYS_NC_OID$, name FROM people
      2  MINUS
      3  SELECT SYS_NC_OID$, name FROM people2;
    
    no rows selected