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

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

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

ここでは 1 行ずつ更新する方法について説明します。通常は、ObjectID を取得してデータを更新するルーチンまたはクライアント プログラムを作成することになります。

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

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

  2. 以下と同じように SQL ステートメントを実行し、Next_RowID ストアド プロシージャを呼び出します。

    Next_RowID ストアド プロシージャは、テーブル所有者とテーブル名を入力として受け取り、テーブルの次の ObjectID を返します。

    この例では、GIS がテーブル所有者、FACTORIES がテーブル名 です。3 つの疑問符(?)は、返される 3 つのパラメータ(ROWID、MSGCODE、MESSAGE)を示しています。

    CALL SDE.next_rowid('GIS','FACTORIES',?,?,?)
    Value of output parameters
    -----------------------------
    
    Parameter Name : O_ROWID
    Parameter Value : 18
    
    Parameter Name : O_MSGCODE
    Parameter Value : 0
    
    Parameter Name : O_MESSAGE
    Parameter Value : Procedure successfully
    completed.
    
    Return Status = 1
    
  3. 上記の CALL ステートメントから返された O_ROWID の値を使用して、レコードをテーブルに挿入します。
    INSERT INTO FACTORIES
    (OBJECTID,NAME,SHAPE)
    VALUES(
    18,
    'megafactory',
    db2gse.ST_PolyFromText('POLYGON( ( 50 31, 54 31, 54 29, 50 29, 50 31) )',
    db2gse.coordref()..srid(101))
    );
    
  4. 編集を続けます。編集が完了した場合は、編集内容をデータベースにコミットします。

関連トピック

9/14/2013