プライマリ・コンテンツに移動
Oracle® Spatial and Graph開発者ガイド
12cリリース1 (12.1)
B72470-07
目次へ移動
目次
索引へ移動
索引

前
次

4.2 SQLを使用したトランザクション挿入

Oracle Spatial and Graphでは、標準SQL構文を使用してアクセスまたはロード可能な、標準のOracleの表を使用します。この項では、SDO_GEOMETRY型の列へのトランザクション挿入の例を示します。一般的に、この処理は比較的少量のデータをデータベースに追加する場合に使用されます。

Oracle SQLのINSERT文では、引数の指定は999までに制限されています。そのため、トランザクションのINSERT文でSDO_GEOMETRYコンストラクタを使用して、999要素以上の可変長配列を作成することはできません。ただし、ホスト変数を使用してジオメトリを挿入することは可能で、そのホスト変数は、SDO_ORDINATE_ARRAYに999以上の値を指定したSDO_GEOMETRYコンストラクタで作成可能です。(ホスト変数は、OCI、PL/SQLまたはJavaプログラムの変数です。)

ジオメトリを挿入するプロシージャを作成し、挿入する各ジオメトリに対してそのプロシージャをコールして、ジオメトリのトランザクション挿入を実行します。例4-4では、挿入処理を実行するプロシージャを作成します。

例4-4 トランザクション挿入処理を実行するプロシージャ

CREATE OR REPLACE PROCEDURE
        INSERT_GEOM(GEOM SDO_GEOMETRY)
IS

BEGIN
  INSERT INTO TEST_1 VALUES (GEOM);
  COMMIT;
END;
/

例4-4で作成したプロシージャを使用して、例4-5に示すようなPL/SQLブロック(geomという変数にジオメトリをロードし、プロシージャINSERT_GEOMをコールしてジオメトリを挿入する)でデータを挿入できます。

例4-5 ジオメトリを挿入するプロシージャをコールするPL/SQLブロック

DECLARE
geom SDO_geometry :=
  SDO_geometry (2003, null, null,
          SDO_elem_info_array (1,1003,3),
          SDO_ordinate_array (-109,37,-102,40));
BEGIN
  INSERT_GEOM(geom);
  COMMIT;
END;
/

様々なジオメトリ・タイプを使用したその他の例については、次の例を参照してください。