DB2 のバージョン非対応ジオデータベース データの SQL による編集
ジオデータベースのバージョン対応登録されていないテーブルのデータがジオデータベースの振舞いに関与しない場合、そのデータに対して SQL による更新、挿入、削除操作を実行できます。SQL を使用して編集できないデータ タイプとジオデータベースの振舞いについては、「SQL で編集可能なデータ タイプ」をご参照ください。
バージョン対応登録されていないテーブルを SQL を使用して編集するときに、履歴管理が有効化されている場合は、テーブル自体ではなく、テーブルの履歴管理ビューを編集する必要があります。ビューは ArcGIS が管理しているフィールドを自動的に更新します。詳細については、「履歴管理ビューとは」と関連トピックをご参照ください。
ジオデータベースに登録されたデータはすべて、システムによって保守される NULL でない一意の ObjectID(Row ID)フィールドを持ちます。SQL を使用してジオデータベースのバージョン対応登録されていないテーブルにレコードを挿入するときは、ObjectID 用の一意な値を設定する必要があります。SQL を使用して ObjectID フィールドに値を挿入するには、Next_RowID ストアド プロシージャを使用します。
次の一連の手順では、バージョン対応登録されていないテーブルの行を 1 行ずつ更新して、ObjectID を挿入する方法を説明します。通常は、ObjectID を取得してデータを更新するルーチンまたはクライアント プログラムを作成することになります。
-
DB2 Call Level Interface のような SQL エディタからデータベースにログインします。
データを編集する権限を持ったユーザとしてデータベースにログインしてください。
-
以下と同じように 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
-
上記の 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(4326)) );
- 編集を続けます。編集が完了した場合は、編集内容をデータベースにコミットします。
テーブルに GUID または Global ID フィールドが含まれている場合は、このフィールドにも一意の値を指定する必要があります。詳細については、「Next_GlobalID」をご参照ください。