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; /
様々なジオメトリ・タイプを使用したその他の例については、次の例を参照してください。
矩形: 「矩形」
穴のあるポリゴン: 「穴のあるポリゴン」
複合線ストリング : 「複合線ストリング」
複合ポリゴン: 「複合ポリゴン」
点: 「点」
方向付きの点: 「方向付きの点」
タイプ0 (ゼロ)要素: 「タイプ0 (ゼロ)要素」