7.31 CREATE_COLLECTION_FROM_QUERY2プロシージャ

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

構文

APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY2 (
    p_collection_name    IN VARCHAR2,
    p_query              IN VARCHAR2,
    p_generate_md5       IN VARCHAR2 default 'NO',
    p_truncate_if_exists IN VARCHAR2 default 'NO');

パラメータ

表7-10 CREATE_COLLECTION_FROM_QUERY2プロシージャのパラメータ

パラメータ 説明

p_collection_name

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

p_query

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

p_generate_md5

有効な値にはYESNOが含まれます。YESの場合、コレクション・メンバーのデータのメッセージ・ダイジェストが計算されます。このパラメータは、コレクション・メンバーのMD5を別のメンバーと比較する場合か、そのメンバーが変更されたかどうかを確認する場合に使用します。

p_truncate_if_exists

YESの場合、コレクションが存在していればコレクションのメンバーがまず切り捨てられ、エラーは発生しません。NOの場合(YESでない場合)、コレクションが存在していれば、エラーが発生します。

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

begin;
    APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY2 (
        p_collection_name => 'EMPLOYEE', 
        p_query => 'select empno, sal, comm, deptno, null, hiredate, null, null, null, null, ename, job, mgr from emp',
        p_generate_md5 => 'NO');
end;