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

前
次

FINALオブジェクト型を含む列のアンロードおよびロード

FINAL型の列のオブジェクトは、オブジェクト型の各属性を外部表の列に移動することで移入されます。また、外部表には、列オブジェクトがアトミックNULLであるかどうかを追跡するための、新規の列が必要です。次の手順では、FINALオブジェクト型を含む列のアンロードおよびロードの方法を示します。

  1. 次の例では、ソース表のwarehouse列がアトミックNULLであるかを追跡するために外部表のwarehouse列を使用します。
    SQL> CREATE TABLE inventories_obj_xt
      2  ORGANIZATION EXTERNAL
      3  (
      4    TYPE ORACLE_DATAPUMP
      5    DEFAULT DIRECTORY def_dir1
      6    LOCATION ('inv_obj_xt.dmp')
      7  )
      8  AS
      9  SELECT oi.product_id,
     10         DECODE (oi.warehouse, NULL, 0, 1) warehouse,
     11         oi.warehouse.location_id location_id,
     12         oi.warehouse.warehouse_id warehouse_id,
     13         oi.warehouse.warehouse_name warehouse_name,
     14         oi.quantity_on_hand
     15  FROM oc_inventories oi;
    
    Table created.
    

    これで、オブジェクト型の属性を含む外部表の列を、その型の列をロードする際の型コンストラクタのファンクションの引数として使用できます。外部表のwarehouse列は、オブジェクトのコンストラクタ・ファンクションをコールするか、列をNULLに設定するかを判断するために使用されます。

  2. oc_inventoriesビューと同様の新規の内部表をロードします。(WHERE 1=0句を使用すると、古い表と同様の表を作成しますが、データは古い表から新しい表にはコピーされません。)
    SQL> CREATE TABLE oc_inventories_2 AS SELECT * FROM oc_inventories
    WHERE 1 = 0;
    
    Table created.
    
    SQL> INSERT INTO oc_inventories_2
      2  SELECT product_id,
      3         DECODE (warehouse, 0, NULL,
      4                 warehouse_typ(warehouse_id, warehouse_name,
      5                 location_id)), quantity_on_hand
      6  FROM inventories_obj_xt;
    
    1112 rows created.