Oracle のバージョン非対応ジオデータベース データの SQL による編集

ジオデータベースのバージョン対応登録されていないテーブルのデータがジオデータベースの振舞いに関与しない場合、そのデータに対して SQL による更新、挿入、削除操作を実行できます。SQL を使用して編集できないデータ タイプとジオデータベースの振舞いについては、「SQL を使用して編集可能なデータの種類」をご参照ください。

ジオデータベースに登録されたデータはすべて、システムによって保守される NULL でない一意の ObjectID(Row ID)フィールドを持ちます。SQL を使用してジオデータベースのバージョン対応登録されていないテーブルにレコードを挿入するときは、ObjectID 用の一意な値を設定する必要があります。

sde.gdb_util パッケージの Next_RowID 関数を使用して、新しい一意の ObjectID の値を生成します。

Next_RowID 関数は、テーブル所有者とテーブル名という 2 つのパラメータを使用します。テーブル所有者名とテーブル名を使用して、ObjectID フィールドに値を入力する SQL ステートメントを作成できます。

注意注意:

次に使用可能な ObjectID は、必ずしも最後に挿入した ObjectID に連続する番号ではありません。一部のクライアント アプリケーションではバッチ操作で ObjectID が割り当てられます。そのため、次に使用可能な ObjectID は、最後に使用した ObjectID から大きく離れた数字になることがあります。また、バッチで使用しなかった ObjectID は、使用可能な値のプールに戻されます。つまり、次に使用可能な ObjectID 値が、実際には、最後に挿入した ObjectID 値より小さくなることもあります。

手順:
  1. SQL*Plus のような SQL エディタからデータベースにログインします。

    データを編集する権限を持ったユーザとしてデータベースにログインしてください。

  2. INSERT ステートメントで sde.gdb_util.next_rowid 関数に所有者名とテーブル名を指定して、次に使用可能な値を ObjectID フィールドに挿入します。

    この例では、ST_Geometry 線分が STREAMS フィーチャクラスに挿入されます。

    INSERT INTO eng2.streams (OBJECTID,NAME,SHAPE) VALUES
    (sde.gdb_util.next_rowid('ENG2', 'STREAMS'), 
    'TRANQUIL', 
    sde.ST_GEOMETRY('linestring (750 150, 750 750)', 4) 
    );
    
  3. 編集を続けます。編集が完了した場合は、編集内容をデータベースにコミットします。

関連トピック

9/14/2013