15.13 CREATE_COLLECTION_FROM_QUERYB2プロシージャ
バルク操作を使用して、指定された問合せからコレクションを作成します。
このメソッドは、CREATE_COLLECTION_FROM_QUERY_2
メソッドよりも非常に高速です。問合せはアプリケーション所有者として解析されます。同じ名前のコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在すると、アプリケーション・エラーが発生します。
このプロシージャはCREATE_COLLECTION_FROM_QUERY_B
と同じです。ただし、SELECT
句の最初の5列は数値である必要があり、次の5列は日付である必要があります。日付データ型の列に続いて、最大50個の文字データ型の列をSELECT
句に指定できます。
このプロシージャは、バルク動的SQLを使用して、名前付きコレクションにフェッチ操作と挿入操作を実行します。このプロシージャには、2つの制限事項があります。
- メンバー・データに対してMD5チェックサムは計算されません。
- 問合せ
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_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 でない場合)、コレクションが存在していれば、エラーが発生します。
|
例
次の例は、CREATE_COLLECTION_FROM_QUERYB2
プロシージャを使用して、EMPLOYEES
というコレクションを作成し、そこにEMP
表のデータを移入する方法を示しています。最初の5列(mgr、sal、comm、deptnoおよびnull)はすべて数値で、次の5列はすべて日付です。
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 = :b1';
APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERYB2 (
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;
親トピック: APEX_COLLECTION