15.11 CREATE_COLLECTION_FROM_QUERY_Bプロシージャ

バルク操作を使用して、指定された問合せからコレクションを作成します。

このメソッドは、CREATE_COLLECTION_FROM_QUERYメソッドよりも非常に高速です。問合せはアプリケーション所有者として解析されます。同じ名前のコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在すると、アプリケーション・エラーが発生します。

このプロシージャは、バルク動的SQLを使用して、名前付きコレクションにフェッチ操作と挿入操作を実行します。このプロシージャには、2つの制限事項があります。

  1. メンバー・データに対してMD5チェックサムは計算されません。
  2. 問合せp_queryの列値は、2,000バイト以内である必要があります。列値が2,000バイトを超える行がある場合は、実行中にエラーが発生します。Oracle Database 11gリリース2 (11.2.0.1)以降では、この列の制限は4,000バイトです。

構文

APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY_B (
    p_collection_name       IN VARCHAR2,
    p_query                 IN VARCHAR2,
    p_names                 IN apex_application_global.vc_arr2,
    p_values                IN apex_application_global.vc_arr2,
    p_max_row_count         IN NUMBER   DEFAULT NULL,
    p_truncate_if_exists    IN VARCHAR2 DEFAULT 'NO' )

パラメータ

パラメータ 説明
p_collection_name コレクションの名前。最大長は255文字です。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在すると、エラーが戻されます。
p_query コレクションのメンバーを移入するために実行する問合せ。
p_names 問合せ文で使用されるバインド変数名の配列。
p_values 問合せ文内のバインド変数で使用されるバインド変数値の配列。
p_max_row_count p_queryの問合せから戻され、コレクションに追加する行の最大数。
p_truncate_if_exists YESの場合、コレクションが存在していればコレクションのメンバーがまず切り捨てられ、エラーは発生しません。NOの場合(YESでない場合)、コレクションが存在していれば、エラーが発生します。

次の例では、EMPLOYEESという名前のコレクションを作成し、EMP表のデータを移入します。

DECLARE
    l_query varchar2(4000);
BEGIN
    l_query := 'select empno, ename, job, sal from emp where deptno = :b1';
    APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY_B (
        p_collection_name => 'EMPLOYEES',
                  p_query => l_query,
                  p_names => apex_util.string_to_table('b1'),
                 p_values => apex_util.string_to_table('10'));
END;