7.35 CREATE_COLLECTION_FROM_QUERYB2プロシージャ(バインド・バージョンなし)

このプロシージャを使用して、指定した問合せ(バルク操作を使用)からコレクションを作成します。このメソッドは、CREATE_COLLECTION_FROM_QUERY_2メソッドよりも非常に高速です。問合せはアプリケーション所有者として解析されます。同じ名前のコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在すると、アプリケーション・エラーが発生します。これはCREATE_COLLECTION_FROM_QUERY_Bと同じですが、SELECT句の最初の5列は数値である必要があり、次の5列は日付である必要があります。日付データ型の列に続いて、最大50個の文字データ型の列をSELECT句に指定できます。

このプロシージャは、バルク動的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_QUERYB2
(
    p_collection_name IN VARCHAR2,
    p_query IN VARCHAR2.
    p_max_row_count IN NUMBER DEFAULT);

パラメータ

Table 7-14 CREATE_COLLECTION_FROM_QUERYB2プロシージャ(バインド・バージョンなし)のパラメータ

パラメータ 説明

p_collection_name

コレクションの名前。最大長は255文字です。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在すると、エラーが戻されます。

p_query

コレクションのメンバーを移入するために実行する問合せ。p_queryが数値である場合、これはDBMS_SQLカーソルとみなされます。

p_max_row_count

p_queryの問合せから戻され、コレクションに追加する必要がある行の最大数。

次の例は、CREATE_COLLECTION_FROM_QUERYB2プロシージャを使用して、EMPLOYEESというコレクションを作成し、そこにEMP表のデータを移入する方法を示しています。最初の5列(mgr、sal、comm、deptnoおよびnull)はすべて数値で、次の5列はすべて日付です。p_generate_md5がNOであるため、MD5チェックサムは計算されません。

declare
  l_query varchar2(4000);
Begin
 l_query := 'select empno, sal, comm, deptno, null, hiredate, null,
null, null, null, ename, job, mgr from emp where deptno = 10';
  APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERYB2 
(
        p_collection_name => 'EMPLOYEES', 
        p_query => l_query,        
End;