7.30 CREATE_COLLECTION_FROM_QUERYプロシージャ

このプロシージャを使用して、指定した問合せからコレクションを作成します。問合せはアプリケーション所有者として解析されます。このメソッドは、SELECT句に最大50個の列を指定した問合せで使用できます。SELECT句内のこれらの列は、コレクションの50個の文字属性(C001からC050)に移入されます。同じ名前のコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在すると、アプリケーション・エラーが発生します。

構文

APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY (
    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-9 CREATE_COLLECTION_FROM_QUERYプロシージャのパラメータ

パラメータ 説明

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_QUERYプロシージャを使用して、AUTOというコレクションを作成し、そこにAUTOS表のデータを移入する方法を示しています。p_generate_md5YESであるため、MD5チェックサムが計算され、変更ステータスを判別するための比較が行われます。

Begin
    l_query := 'select make, model, year from AUTOS';
    APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY (
        p_collection_name => 'AUTO', 
        p_query => l_query,
        p_generate_md5 => 'YES');
End;