ヘッダーをスキップ
Oracle Spatial開発者ガイド
11g リリース1(11.1)
E05682-03
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

26 SDO_MIGRATEパッケージ(アップグレード)

この章で説明するSDO_MIGRATE.TO_CURRENTサブプログラムには、プロシージャとファンクションの両方のインタフェースがあります。プロシージャの場合、以前のリリースのSpatialから空間ジオメトリ表をアップグレードすることができます。また、ファンクションの場合は、単一のSDO_GEOMETRYオブジェクトをアップグレードできます。

このサブプログラムは、使用方法が非常に限定されています。「使用上の注意」を参照してください。


SDO_MIGRATE.TO_CURRENT

構文(オブジェクト・リレーショナル・モデル実装から今回のリリースへのアップグレード)

SDO_MIGRATE.TO_CURRENT(

     tabname IN VARCHAR2

     [, column_name IN VARCHAR2]);

または

SDO_MIGRATE.TO_CURRENT(

     tabname IN VARCHAR2,

     column_name IN VARCHAR2

     [, commit_int IN NUMBER]);

構文(単一のオブジェクト・リレーショナル・モデル・ジオメトリから今回のリリースへのアップグレード)

SDO_MIGRATE.TO_CURRENT(

     geom IN SDO_GEOMETRY,

     dim IN SDO_DIM_ARRAY

     ) RETURN SDO_GEOMETRY;

構文(リレーショナル・モデル実装から今回のリリースへのアップグレード)

SDO_MIGRATE.TO_CURRENT(

     layer IN VARCHAR2,

     newtabname IN VARCHAR2,

     gidcolumn IN VARCHAR2,

     geocolname IN VARCHAR2,

     layer_gtype IN VARCHAR2,

     updateflag IN VARCHAR2);

説明

不要になったSpatialリレーショナル・モデル(リリース8.1.5以下)から現行のリリースにデータをアップグレードするか、またはアップグレードする必要のある1つ以上のオブジェクト・リレーショナル・モデル(リリース8.1.6以上)・ジオメトリをアップグレードします(「使用上の注意」を参照)。プロシージャの場合、TO_CURRENTは、レイヤー全体(列内のすべてのジオメトリ)をアップグレードします。ファンクションの場合、TO_CURRENTは、SDO_GEOMETRY型の単一のジオメトリ・オブジェクトをアップグレードします。

レイヤーをアップグレードする場合、プロシージャの構文は、Spatialのリレーショナル・モデル(リリース8.1.5以下)からアップグレードするか、またはオブジェクト・リレーショナル・モデル(リリース8.1.6以上)からアップグレードするかによって異なります。適用されるモデルについては、「使用上の注意」を参照してください。


注意:

このプロシージャは2次元ジオメトリにのみ適用されます。これは3次元ジオメトリではサポートされていません。

パラメータ

tabname

ジオメトリ・オブジェクトが格納されている表を指定します。

column_name

ジオメトリ・オブジェクトを含むtabnameの列を指定します。column_nameが指定されていないか、またはNULLが指定されている場合は、ジオメトリ・オブジェクトを含む列がアップグレードされます。

commit_int

Spatialによって内部コミット操作が実行される前にアップグレードするジオメトリの数を指定します。commit_intを指定しない場合、アップグレード時に内部コミット操作が実行されません。

commit_int値を指定すると、この値を指定しない場合より小規模なロールバック・セグメントを使用できます。

geom

今回のリリースにアップグレードする単一のジオメトリ・オブジェクトを指定します。

dim

アップグレードするジオメトリ・オブジェクトの次元情報の配列を指定します。SDO_DIM_ARRAY型の詳細は、2.8.3項を参照してください。

layer

アップグレードするレイヤーの名前を指定します。

newtabname

データのアップグレード先となる新しい表の名前を指定します。

gidcolumn

古い表からGIDを格納する列名を指定します。

geocolname

ジオメトリ・オブジェクトを挿入する新しい表の列名を指定します。

layer_gtype

POINTまたはNOTPOINT(デフォルト)のいずれかを指定します。

アップグレードするレイヤーがすべて点である場合、このパラメータをPOINTに設定すると、最適なパフォーマンスが得られます。それ以外の場合は、NOTPOINTを指定します。レイヤーに点以外のジオメトリが含まれる場合に、値をPOINTに設定すると、アップグレードによって無効なデータが生成される場合があります。

updateflag

UPDATEまたはINSERT(デフォルト)のいずれかを指定します。

既存の属性の表に移入するアップグレードの場合は、UPDATEを指定します。それ以外の場合は、INSERTを指定します。

オブジェクト・リレーショナル・モデル・レイヤー、および単一のジオメトリからアップグレードする場合の使用上の注意

このサブプログラムは、Oracle Spatialの通常のアップグレードを行う際には必要ありません。 これは、空間データがサード・パーティのローダーを使用してロードされる場合で、結果のジオメトリの方向が誤っているかETYPE値やGTYPE値が無効な場合に必要になることがあります。 空間データをロードおよび検証する際の推奨手順の一部としてこのサブプログラムを使用する方法については、4.3項を参照してください。

このサブプログラムによって、指定されたレイヤー内の指定のジオメトリ・オブジェクトまたはすべてのジオメトリ・オブジェクトがアップグレードされるため、SDO_GTYPE値およびSDO_ETYPE値は、今回のリリースの形式になります。

ジオメトリは、先に外部の輪、次に内部の輪の順に順序付けされ、各座標は正しいローテーション(外部の輪は反時計回り、内部の輪は時計回り)で保存されます。

リレーショナル・モデルからアップグレードする場合の使用上の注意

Spatialのリレーショナル・モデル(リリース8.1.5以下)からアップグレードする場合、このプロシージャを使用する際には次を考慮してください。

次の例では、ROADS表内のジオメトリ・オブジェクトの定義を、リリース8.1.5より上の形式から今回のリリースの形式へ変更します。

EXECUTE SDO_MIGRATE.TO_CURRENT('ROADS');