DEFINE_ARRAY ステートメントは、取得する行の列のセットを定義するために使用されます(FETCH_ROWS を使用して呼び出します)。
DEFINE_ARRAY は、単一の SELECT ステートメントを使用して行を一括取得し、パラメータとして COLUMN_VALUE に渡して呼び出すことができます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
コレクションのスカラーおよびLOB型
ローカル変数は以下の型として宣言でき、その後DBMS_SQLを使用して任意の数の行を抽出します。(これらの型はBIND_ARRAYストアドプロシージャで指定された型と同じにすることができます。)
TYPE binary_double_table
IS TABLE OF BINARY_DOUBLE INDEX BY BINARY_INTEGER;
TYPE binary_float_table
IS TABLE OF BINARY_FLOAT INDEX BY BINARY_INTEGER;
TYPE bfile_table IS TABLE OF BFILE INDEX BY BINARY_INTEGER;
TYPE blob_table IS TABLE OF BLOB INDEX BY BINARY_INTEGER;
TYPE clob_table IS TABLE OF CLOB INDEX BY BINARY_INTEGER;
TYPE date_table IS TABLE OF DATE INDEX BY BINARY_INTEGER;
TYPE interval_day_to_second_Table
IS TABLE OF dsinterval_unconstrained
INDEX BY BINARY_INTEGER;
TYPE interval_year_to_MONTH_Table
IS TABLE OF yminterval_unconstrained
INDEX BY BINARY_INTEGER;
TYPE number_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
TYPE time_table IS TABLE OF time_unconstrained
INDEX BY BINARY_INTEGER;
TYPE time_with_time_zone_table
IS TABLE OF time_tz_unconstrained
INDEX BY BINARY_INTEGER;
TYPE timestamp_table
IS TABLE OF timestamp_unconstrained
INDEX BY BINARY_INTEGER;
TYPE timestamp_with_ltz_Table
IS TABLE OF timestamp_ltz_unconstrained
INDEX BY BINARY_INTEGER;
TYPE timestamp_with_time_zone_Table
IS TABLE OF timestamp_tz_unconstrained
INDEX BY BINARY_INTEGER;
TYPE urowid_table IS TABLE OF UROWID INDEX BY BINARY_INTEGER;
TYPE varchar2_table IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
構文
DBMS_SQL.DEFINE_ARRAY (
c IN INTEGER,
position IN INTEGER,
<table_variable> IN <datatype>
cnt IN INTEGER,
lower_bnd IN INTEGER);
ここで、<table_variable> とそれに対応する <datatype> は以下のマッチングペアであり、DEFINE_ARRAY は異なるデータ型を受け入れるようにオーバーロードされています。
<n_tab> Number_Table
<c_tab> Varchar2_Table
<d_tab> Date_Table
<bl_tab> Blob_Table
<cl_tab> Clob_Table
パラメータの説明
| パラメータ | 説明 |
|---|---|
| c | バインドする配列のカーソルID。 |
| position | 定義された配列内の列の相対的な位置。 ステートメント内の最初の列の位置は1です。 |
| table_variable | <datatype> として宣言されたローカル変数。 |
| cnt | 抽出しなければならない行数。 |
| lower_bnd | この下限インデックスから、結果をコレクションにコピーします。 |
使用方法
カウント
(cnt)は0より大きい整数でなければならず、そうでない場合は例外が発生します。lower_bndは正の数、負の数、またはゼロにすることができます。DEFINE_ARRAYを呼び出すクエリには、配列バインディングを含めることはできません。