この章で説明するSDO_MIGRATE.TO_CURRENTサブプログラムには、プロシージャとファンクションの両方のインタフェースがあります。プロシージャの場合、以前のリリースのSpatialから空間ジオメトリ表をアップグレードでき、また、ファンクションの場合は、単一のSDO_GEOMETRYオブジェクトをアップグレードできます。
このサブプログラムは、使用方法が非常に限定されています。「使用上の注意」を参照してください。
構文(オブジェクト・リレーショナル・モデル実装から今回のリリースへのアップグレード)
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
が指定されていないか、またはNULLが指定されている場合は、ジオメトリ・オブジェクトを含む列がアップグレードされます。
Spatialによって内部コミット操作が実行される前にアップグレードするジオメトリの数を指定します。commit_int
を指定しない場合、アップグレード時に内部コミット操作が実行されません。
commit_int
値を指定すると、この値を指定しない場合より小規模なロールバック・セグメントを使用できます。
今回のリリースにアップグレードする単一のジオメトリ・オブジェクトを指定します。
アップグレードするジオメトリ・オブジェクトの次元情報の配列を指定します。SDO_DIM_ARRAY型の詳細は、2.8.3項を参照してください。
アップグレードするレイヤーの名前を指定します。
データのアップグレード先となる新しい表の名前を指定します。
古い表からGIDを格納する列名を指定します。
ジオメトリ・オブジェクトを挿入する新しい表の列名を指定します。
POINTまたはNOTPOINT(デフォルト)のいずれかを指定します。
アップグレードするレイヤーがすべて点データである場合、このパラメータをPOINTに設定すると、最適なパフォーマンスが得られます。それ以外の場合は、NOTPOINTを指定します。レイヤーに点以外のジオメトリが含まれる場合に、値をPOINTに設定すると、アップグレードによって無効なデータが生成される場合があります。
UPDATEまたはINSERT(デフォルト)のいずれかを指定します。
既存の属性の表に移入するアップグレードの場合は、UPDATEを指定します。それ以外の場合は、INSERTを指定します。
オブジェクト・リレーショナル・モデル・レイヤー、および単一のジオメトリからアップグレードする場合の使用上の注意
このサブプログラムは、Oracle Spatialの通常のアップグレードを行う際には必要ありません。これは、空間データがサード・パーティのローダーを使用してロードされる場合で、結果のジオメトリの方向が誤っているかETYPE値やGTYPE値が無効な場合に必要になることがあります。空間データをロードおよび検証する際の推奨手順の一部としてこのサブプログラムを使用する方法については、4.3項を参照してください。
このサブプログラムによって、指定されたレイヤー内の指定のジオメトリ・オブジェクトまたはすべてのジオメトリ・オブジェクトがアップグレードされるため、SDO_GTYPE値およびSDO_ETYPE値は、今回のリリースの形式になります。
ジオメトリは、先に外部の輪、次に内部の輪の順に順序付けされ、各座標は正しいローテーション(外部の輪は反時計回り、内部の輪は時計回り)で保存されます。
リレーショナル・モデルからアップグレードする場合の使用上の注意
Spatialのリレーショナル・モデル(リリース8.1.5以下)からアップグレードする場合、このプロシージャを使用する際には次を考慮してください。
このプロシージャをコールする前に、新しい表を作成しておく必要があります。
アップグレードするデータが測地の場合、許容差(<layername>_SDODIM表またはビュー内のSDO_TOLERANCE列の値)は、10進度(たとえば0.00000005)で表す必要があります。
このプロシージャによって、ジオメトリがリレーショナル・モデルからオブジェクト・リレーショナル・モデルに変換されます。
このプロシージャで、コミット操作が実行されます。
アップグレード時に正常に実行されなかった操作がある場合、レイヤー内のすべてのデータについてアップグレードは行われません。
layer
には、基になるレイヤー名を_SDOGEOM接尾辞を付けずに指定します。
アップグレード前のSDO_GIDは、gidcolumn
に格納されます。
2.2.4項に示す値を使用して、SDO_ETYPE値が作成されます。
このプロシージャは、先に外部の輪、次に内部の輪の順になるようにジオメトリの順序付けを行い、正しいローテーション(外部の輪は反時計回り、内部の輪は時計回り)で各座標を保存します。