コレクションを使用すると、1つ以上の非スカラー値を一時的に取得できます。コレクションを使用して、現在セッション・ステートにある行および列を格納します。これによって、あるユーザーの特定のセッション中にそれらの行および列に対してアクセス、操作または処理を行うことができます。コレクションは、バケツのようなものと考えることができます。その中に情報の行を一時的に格納し、その情報を指定できます。
トピック:
各コレクションには、データ要素(メンバー)の名前付きリストが含まれます。このリストには、最大50個の文字属性(VARCHAR2(4000)
)、5個の数値属性、5個の日付属性、1個のXMLタイプ属性、1個のラージ・バイナリ属性(BLOB
)および1個のラージ・キャラクタ属性(CLOB
)を含めることができます。PL/SQL API APEX_COLLECTION
を使用して、コレクション情報を挿入、更新および削除します。
次に、コレクションを使用する場合の例を示します。
データ入力ウィザードを作成しており、そのウィザードで、まず論理トランザクション中に複数行の情報を収集する必要がある場合。物理トランザクションと論理トランザクションの両方の完了時、ウィザードの最終ステップを実行する前に、コレクションを使用して、複数行の情報のコンテンツを一時的に格納できます。
アプリケーションに、ユーザーが1つのページで複数の詳細行を更新する更新ページが含まれている場合。ユーザーは、複数の更新を行い、それらの更新をコレクションに適用した後、最終プロセスをコールしてそれらの変更をデータベースに適用できます。
任意の数の属性を収集するウィザードを構築している場合。コレクションに一時的に格納された情報が取得され、データベースに適用されるタスクをウィザードの最後にユーザーが実行するようにします。
トピック:
トピック:
コレクションを作成する場合、255文字以下の名前を付ける必要があります。コレクション名の大/小文字は区別されず、すべて大文字に変換されます。
コレクションに名前を付けた後、コレクション内の値にアクセスするには、APEX_COLLECTIONS
ビューに対してSQL問合せを実行します。
各コレクションには、データ要素(メンバー)の名前付きリストが含まれます。このリストには、最大50個の文字属性(VARCHAR2(4000)
)、5個の数値属性、1個のXMLタイプ属性、1個のラージ・バイナリ属性(BLOB
)および1個のラージ・キャラクタ属性(CLOB
)を含めることができます。次のメソッドを使用してコレクションを作成します。
CREATE_COLLECTION
このメソッドは、指定された名前で空のコレクションを作成します。名前付きコレクションが存在すると、例外が発生します。
CREATE_OR_TRUNCATE_COLLECTION
指定された名前付きコレクションが存在しないと、このメソッドは、指定された名前で空のコレクションを作成します。名前付きコレクションが存在すると、このメソッドによって切り捨てられます。コレクションは切り捨てられることによって空になりますが、そのまま残ります。
CREATE_COLLECTION_FROM_QUERY
このメソッドは、コレクションを作成してから、指定された問合せの結果を移入します。名前付きコレクションが存在すると、例外が発生します。このメソッドは、SELECT
句に最大50個の列を指定した問合せで使用できます。SELECT
句内のこれらの列は、コレクションの50個の文字属性(C001からC050)に移入されます。
CREATE_COLLECTION_FOM_QUERY2
このメソッドは、コレクションを作成してから、指定された問合せの結果を移入します。名前付きコレクションが存在すると、例外が発生します。このメソッドは、CREATE_COLLECTION_FROM_QUERY
と同じですが、SELECT
句の最初の5列は数値である必要があります。数値データ型の列に続いて、最大50個の文字データ型の列をSELECT
に指定できます。
CREATE_COLLECTION_FROM_QUERY_B
このメソッドでは、バルクSQL操作を実行することにより、CREATE_COLLECTION_FROM_QUERY
メソッドよりも非常に速いパフォーマンスが提供されますが、次の制限があります。
問合せの選択リスト内の列値は、2,000バイトを超えることはできません。列値が2,000バイトを超える行がある場合は、実行中にエラーが発生します。
コレクション内のいずれのメンバーに対してもMD5チェックサムは計算されません。
CREATE_COLLECTION_FROM_QUERYB2
このメソッドも、コレクションを作成してから、指定された問合せの結果を移入します。名前付きコレクションが存在すると、例外が発生します。このメソッドは、CREATE_COLLECTION_FROM_QUERY_B
と同じですが、SELECT
句の最初の5列は数値である必要があります。数値データ型の列に続いて、最大50個の文字データ型の列をSELECT
に指定できます。
p_generate_md5
フラグを使用して、コレクション・メンバーのデータのメッセージ・ダイジェストを計算する必要があるかどうかを指定します。デフォルトでは、このフラグはNO
に設定されています。このパラメータを使用して、コレクション・メンバーのMD5をチェックします(つまり、MD5を他のメンバーと比較して、メンバーが変更されたかどうかを確認します)。
データベース・ビューAPEX_COLLECTIONS
を問い合せると、コレクションのメンバーにアクセスできます。APEX_COLLECTIONS
ビューには、次の定義が含まれます。
COLLECTION_NAME NOT NULL VARCHAR2(255) SEQ_ID NOT NULL NUMBER C001 VARCHAR2(4000) C002 VARCHAR2(4000) C003 VARCHAR2(4000) C004 VARCHAR2(4000) C005 VARCHAR2(4000) ... C050 VARCHAR2(4000) N001 NUMBER N002 NUMBER N003 NUMBER N004 NUMBER N005 NUMBER CLOB001 CLOB BLOB001 BLOB XMLTYPE001 XMLTYPE MD5_ORIGINAL VARCHAR2(4000)
APEX_COLLECTIONS
ビューは、アプリケーションで、アプリケーション内の他の表またはビューと同様に使用します。次に例を示します。
SELECT c001, c002, c003, n001, clob001 FROM APEX_collections WHERE collection_name = 'DEPARTMENTS'
トピック:
コレクションのメンバーを、配列の集合として渡した値とマージできます。p_init_query
引数を使用することで、指定した問合せからコレクションを作成できます。
コレクションを切り捨てると、指定したコレクションからすべてのメンバーが削除されますが、名前付きコレクションはそのまま残ります。
コレクションを削除すると、コレクションとそのすべてのメンバーが削除されます。自分でコレクションを削除しなくても、セッションがパージされるときにコレクションが削除されることに注意してください。
現在のアプリケーションに定義されたすべてのコレクションを削除するには、DELETE_ALL_COLLECTIONS
メソッドを使用します。
現在のセッションに定義されたすべてのコレクションを削除するには、DELETE_ALL_COLLECTIONS_SESSION
メソッドを使用します。
トピック:
コレクションに追加したデータ要素(メンバー)には、一意の順序番号が割り当てられます。メンバーをコレクションに追加すると、最も新しいメンバーが一番大きいIDを持つように、順序番号が1つ増えます。
コレクションに新しいメンバーを追加するには、ADD_MEMBERファンクション
を使用します。このファンクションをコールすると、新しく追加したメンバーの順序番号が戻されます。
ADD_MEMBERS
プロシージャを使用して、新しいメンバー(メンバーの配列)をコレクションに追加することもできます。追加されるメンバーの数は、1つ目の配列の要素数に基づきます。
p_generate_md5
フラグを使用して、コレクション・メンバーのデータのメッセージ・ダイジェストを計算する必要があるかどうかを指定します。デフォルトでは、このフラグはNO
に設定されています。このパラメータを使用して、コレクション・メンバーのMD5をチェックします(つまり、MD5を他のメンバーと比較して、メンバーが変更されたかどうかを確認します)。
4,000文字を超えるコレクション・メンバー属性には、p_clob001
を使用します。バイナリ・コレクション・メンバー属性には、p_blob001
を使用します。整形式XMLを格納するには、p_xmltype001
を使用します。
コレクション・メンバーを更新するには、UPDATE_MEMBER
プロシージャをコールして、更新するコレクション・メンバーを順序番号を使用して参照します。UPDATE_MEMBER
プロシージャでは、個々のメンバー属性ではなく、コレクション・メンバー全体が置換されます。
4,000文字を超えるコレクション・メンバー属性には、p_clob001
パラメータを使用します。
コレクション・メンバーの単一の属性を更新するには、UPDATE_MEMBER_ATTRIBUTEプロシージャ
を使用します。
コレクション・メンバーを削除するには、DELETE_MEMBER
プロシージャをコールして、削除するコレクション・メンバーを順序番号を使用して参照します。このプロシージャでは、順序番号の欠落は指定したコレクションにそのまま残ることに注意してください。
また、属性が特定の値と一致するという条件で、コレクションからすべてのメンバーを削除することもできます。DELETE_MEMBERS
プロシージャでも、順序番号の欠落は指定したコレクションにそのまま残ります。指定した属性値がnullの場合、名前付きコレクションのメンバーのうち、属性(p_attr_number
で指定)がnullであるすべてのメンバーが削除されます。
トピック:
コレクション内のすべてのメンバーの合計数を戻すには、COLLECTION_MEMBER_COUNT
を使用します。この数は、コレクション内の順序番号の最大値ではないことに注意してください。
要素の順序を保持したままで、コレクションを再順序付けして順序番号の欠落を排除するには、RESEQUENCE_COLLECTION
を使用します。
コレクションが存在するかどうかを確認するには、COLLECTION_EXISTS
を使用します。
順序番号を上下に移動することで、コレクション内の特定のメンバーの順序番号を調整できます。順序番号を調整すると、指定した番号が別の番号と入れ替えられます。たとえば、番号2を1つ上に移動すると、2が3になり、3が2になります。
メンバーの順序番号を1つ上に移動するには、MOVE_MEMBER_UP
を使用します。メンバーの順序番号を1つ下に移動するには、MOVE_MEMBER_DOWN
を使用します。
コレクションのメンバーを列番号で並べ替えるには、SORT_MEMBERS
メソッドを使用します。このメソッドは、特定の列番号でコレクションをソートし、各メンバーの順序番号の欠落を排除するように順序番号の再割当ても行います。
コレクションのセッション・ステートをクリアすると、コレクションのメンバーを削除できます。ショッピング・カートは、コレクションのセッション・ステートをクリアする必要がある場合のよい例です。ユーザーがショッピング・カートを空にして再度開始するよう要求した場合に、コレクションのセッション・ステートをクリアする必要があります。TRUNCATE_COLLECTION
メソッドをコールするか、f?p
構文を使用して、コレクションのセッション・ステートを削除できます。
TRUNCATE_COLLECTION
メソッドをコールすると、既存のコレクションが削除され、そのコレクションが再作成されます。次に例を示します。
APEX_COLLECTION.TRUNCATE_COLLECTION( p_collection_name => collection name);
f?p
構文の6つ目の引数を使用してセッション・ステートをクリアすることもできます。次に例を示します。
f?p=App:Page:Session::NO:collection name
p_generate_md5
パラメータは、コレクションの各メンバーに対してMD5メッセージ・ダイジェストを計算するかどうかを判別します。コレクションの作成直後、コレクション・ステータス・フラグはFALSE
に設定されます。コレクションに対して操作(追加、更新、切捨てなど)が行われると、このフラグはTRUE
に設定されます。
このフラグは、RESET_COLLECTION_CHANGED
をコールすることで、手動でリセットできます。
このフラグをリセットした後にコレクションが変更されたかどうかを判別するには、COLLECTION_HAS_CHANGED
をコールします。
p_generated_md5
パラメータがYES
に設定されている場合、コレクションに新しいメンバーを追加すると、50個のすべての属性とCLOB属性に対してMD5メッセージ・ダイジェストが計算されます。この値にはAPEX_CCOLLECTION
ビューのMD5_ORIGINAL
列からアクセスできます。GET_MEMBER_MD5
ファンクションを使用して、指定したコレクション・メンバーの現在の値に対するMD5メッセージ・ダイジェストにアクセスできます。
このプロシージャを使用して、既存のコレクションに新しいメンバーを追加します。指定されたコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在しないと、エラーが発生します。新しいメンバーの追加では、欠落したものは使用されないため、メンバーの順序番号が1,2,5,8である既存のコレクションの場合、新しいメンバーは順序番号9として追加されます。
構文
APEX_COLLECTION.ADD_MEMBER ( p_collection_name IN VARCHAR2, p_c001 IN VARCHAR2 default null, ... p_c050 IN VARCHAR2 default null, p_n001 IN NUMBER default null, p_n002 IN NUMBER default null, p_n003 IN NUMBER default null, p_n004 IN NUMBER default null, p_n005 IN NUMBER default null, p_d001 IN DATE default null, p_d002 IN DATE default null, p_d003 IN DATE default null, p_d004 IN DATE default null, p_d005 IN DATE default null, p_clob001 IN CLOB default empty_clob(), p_blob001 IN BLOB default empty_blob(), p_xmltype001 IN XMLTYPE default null, p_generate_md5 IN VARCHAR2 default 'NO');
パラメータ
表4-1に、ADD_MEMBER
プロシージャで使用可能なパラメータを示します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。 |
表4-1 ADD_MEMBERプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のコレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。 |
|
追加するメンバーの属性値。最大長は4,000バイトです。4,000文字を超える文字属性は、4,000文字に切り捨てられます。 |
|
追加する数値属性の属性値。 |
|
データ属性の属性値。 |
|
4,000文字を超えるコレクション・メンバー属性には、p_clob001を使用します。 |
|
バイナリ・コレクション・メンバー属性には、p_blob001を使用します。 |
|
整形式XMLを格納するには、p_xmltype001を使用します。 |
|
有効な値には |
例
ADD_MEMBERプロシージャの例を次に示します。
APEX_COLLECTION.ADD_MEMBER( p_collection_name => 'GROCERIES' p_c001 => 'Grapes', p_c002 => 'Imported', p_n001 => 125, p_d001 => sysdate ); END;
このファンクションを使用して、既存のコレクションに新しいメンバーを追加します。このファンクションをコールすると、新しく追加したメンバーの順序番号が戻されます。指定されたコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在しないと、エラーが発生します。新しいメンバーの追加では、欠落したものは使用されないため、メンバーの順序番号が1,2,5,8である既存のコレクションの場合、新しいメンバーは順序番号9として追加されます。
構文
APEX_COLLECTION.ADD_MEMBER ( p_collection_name IN VARCHAR2, p_c001 IN VARCHAR2 default null, ... p_c050 IN VARCHAR2 default null, p_n001 IN NUMBER default null, p_n002 IN NUMBER default null, p_n003 IN NUMBER default null, p_n004 IN NUMBER default null, p_n005 IN NUMBER default null, p_d001 IN DATE default null, p_d002 IN DATE default null, p_d003 IN DATE default null, p_d004 IN DATE default null, p_d005 IN DATE default null, p_clob001 IN CLOB default empty_clob(), p_blob001 IN BLOB default empty_blob(), p_xmltype001 IN XMLTYPE default null, p_generate_md5 IN VARCHAR2 default 'NO') RETURN NUMBER;
パラメータ
表4-2では、ADD_MEMBER
ファンクションで使用可能なパラメータについて説明します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。 |
表4-2 ADD_MEMBERファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
既存のコレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。 |
|
追加するメンバーの属性値。最大長は4,000バイトです。4,000文字を超える文字属性は、4,000文字に切り捨てられます。 |
|
追加する数値属性の属性値。 |
|
追加する日付属性の属性値。 |
|
4,000文字を超えるコレクション・メンバー属性には、p_clob001を使用します。 |
|
バイナリ・コレクション・メンバー属性には、p_blob001を使用します。 |
|
整形式XMLを格納するには、p_xmltype001を使用します。 |
|
有効な値には |
例
DECLARE l_seq number; BEGIN l_seq := APEX_COLLECTION.ADD_MEMBER( p_collection_name => 'GROCERIES' p_c001 => 'Grapes', p_c002 => 'Imported', p_n001 => 125, p_d001 => sysdate ); END;
このプロシージャを使用して、コレクションにメンバーの配列を追加します。指定されたコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在しないと、エラーが発生します。新しいメンバーの追加では、欠落したものは使用されないため、メンバーの順序番号が1,2,5,8である既存のコレクションの場合、新しいメンバーは順序番号9として追加されます。p_c001 PL/SQL表内の要素数は、すべてのPL/SQL表内のアイテムの合計数として使用されます。たとえば、p_c001.countが2で、p_c002.countが10である場合、追加されるメンバーは2つのみです。p_c001がnullの場合は、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.ADD_MEMBERS ( p_collection_name IN VARCHAR2, p_c001 IN APEX_APPLICATION_GLOBAL.VC_ARR2 default empty_vc_arr, p_c002 IN APEX_APPLICATION_GLOBAL.VC_ARR2 default empty_vc_arr, p_c003 IN APEX_APPLICATION_GLOBAL.VC_ARR2 default empty_vc_arr, ... p_c050 IN APEX_APPLICATION_GLOBAL.VC_ARR2 default empty_vc_arr, p_n001 IN APEX_APPLICATION_GLOBAL.N_ARR default empty_n_arr, p_n002 IN APEX_APPLICATION_GLOBAL.N_ARR default empty_n_arr, p_n003 IN APEX_APPLICATION_GLOBAL.N_ARR default empty_n_arr, p_n004 IN APEX_APPLICATION_GLOBAL.N_ARR default empty_n_arr, p_n005 IN APEX_APPLICATION_GLOBAL.N_ARR default empty_n_arr, p_d001 IN APEX_APPLICATION_GLOBAL.D_ARR default empty_d_arr, p_d002 IN APEX_APPLICATION_GLOBAL.D_ARR default empty_d_arr, p_d003 IN APEX_APPLICATION_GLOBAL.D_ARR default empty_d_arr, p_d004 IN APEX_APPLICATION_GLOBAL.D_ARR default empty_d_arr, p_d005 IN APEX_APPLICATION_GLOBAL.D_ARR default empty_d_arr, p_generate_md5 IN VARCHAR2 default 'NO');
パラメータ
表4-3に、ADD_MEMBERS
プロシージャで使用可能なパラメータを示します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-3 ADD_MEMBERSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
既存のコレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。 |
|
追加する文字属性値の配列。 |
|
追加する数値属性値の配列。 |
|
追加する日付属性値の配列。 |
|
有効な値には |
例
次の例は、2つの新しいメンバーをEMPLOYEE
表に追加する方法を示しています。
Begin APEX_COLLECTION.ADD_MEMBERS( p_collection_name => 'EMPLOYEE', p_c001 => l_arr1, p_c002 => 1_arr2); End;
このファンクションを使用して、コレクションが存在するかどうかを判別します。指定したコレクションが、カレント・アプリケーションIDのカレント・セッション内にカレント・ユーザー用として存在すると、TRUE
が戻されます。それ以外の場合は、FALSE
が戻されます。
構文
APEX_COLLECTION.COLLECTION_EXISTS ( p_collection_name IN VARCHAR2) RETURN BOOLEAN;
パラメータ
表4-4に、COLLECTION_EXISTS
ファンクションで使用可能なパラメータを示します。
表4-4 COLLECTION_EXISTSファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は、大/小文字が区別されず、大文字に変換されます。 |
例
次の例は、COLLECTION_EXISTS
ファンクションを使用して、EMPLOYEES
というコレクションが存在するかどうかを判別する方法を示しています。
Begin l_exists := APEX_COLLECTION.COLLECTION_EXISTS ( p_collection_name => 'EMPLOYEES'; End;
このファンクションを使用して、コレクションの変更またはコレクション変更フラグのリセットが行われた後に、コレクションが変更されたかどうかを判別します。
構文
APEX_COLLECTION.COLLECTION_HAS_CHANGED ( p_collection_name IN VARCHAR2) RETURN BOOLEAN;
パラメータ
表4-5では、COLLECTION_HAS_CHANGED
ファンクションで使用可能なパラメータについて説明します。
表4-5 COLLECTION_HAS_CHANGEDファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
例
次の例は、COLLECTION_HAS_CHANGED
ファンクションを使用して、EMPLOYEES
コレクションの作成後、または最後のリセット後に、このコレクションが変更されたかどうかを判別する方法を示しています。
Begin l_exists := APEX_COLLECTION.COLLECTION_HAS_CHANGED ( p_collection_name => 'EMPLOYEES'; End;
このファンクションを使用して、名前付きコレクションのメンバーの合計数を取得します。欠落があると、戻されるメンバー合計数と、コレクションの最も大きい順序番号が一致しなくなります。名前付きコレクションがカレント・セッション内にカレント・ユーザー用として存在しないと、エラーが発生します。
構文
APEX_COLLECTION.COLLECTION_MEMBER_COUNT ( p_collection_name IN VARCHAR2) RETURN NUMBER;
パラメータ
表4-6では、COLLECTION_MEMBER_COUNT
ファンクションで使用可能なパラメータについて説明します。
例
この例は、COLLECTION_MEMBER_COUNT
ファンクションを使用して、DEPARTMENTS
コレクションのメンバーの合計数を取得する方法を示しています。
Begin l_count := APEX_COLLECTION.COLLECTION_MEMBER_COUNT( p_collection_name => 'DEPARTMENTS'; End;
このプロシージャを使用して、まだ存在していない空のコレクションを作成します。同じ名前のコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在すると、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.CREATE_COLLECTION( p_collection_name IN VARCHAR2);
パラメータ
表4-7では、CREATE_COLLECTION
プロシージャで使用可能なパラメータについて説明します。
表4-7 CREATE_COLLECTIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255文字です。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在すると、エラーが戻されます。 |
例
この例は、CREATE_COLLECTION
プロシージャを使用して、EMPLOYEES
という空のコレクションを作成する方法を示しています。
Begin APEX_COLLECTION.CREATE_COLLECTION( p_collection_name => 'EMPLOYEES'); End;
このプロシージャを使用して、コレクションを作成します。同じ名前のコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在すると、そのコレクションのすべてのメンバーが削除されます。つまり、名前付きコレクションが切り捨てられます。
構文
APEX_COLLECTION.CREATE_OR_TRUNCATE_COLLECTION( p_collection_name IN VARCHAR2);
パラメータ
表4-8では、CREATE_OR_TRUNCATE_COLLECTION
プロシージャで使用可能なパラメータについて説明します。
表4-8 CREATE_OR_TRUNCATE_COLLECTIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255文字です。名前付きコレクションがカレント・セッションにカレント・ユーザー用として存在すると、その名前付きコレクションのすべてのメンバーが削除されます。 |
例
この例は、CREATE_OR_TRUNCATE_COLLECTION
プロシージャを使用して、EMPLOYEES
という既存のコレクションのすべてのメンバーを削除する方法を示しています。
Begin APEX_COLLECTION.CREATE_OR_TRUNCATE_COLLECTION( p_collection_name => 'EMPLOYEES'); End;
このプロシージャを使用して、指定した問合せからコレクションを作成します。問合せはアプリケーション所有者として解析されます。このメソッドは、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');
パラメータ
表4-9では、CREATE_COLLECTION_FROM_QUERY
プロシージャで使用可能なパラメータについて説明します。
表4-9 CREATE_COLLECTION_FROM_QUERYプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255文字です。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在すると、エラーが戻されます。 |
|
コレクションのメンバーを移入するために実行する問合せ。p_queryが数値である場合、これはDBMS_SQLカーソルとみなされます。 |
|
有効な値には |
例
次の例は、CREATE_COLLECTION_FROM_QUERY
プロシージャを使用して、AUTO
というコレクションを作成し、そこにAUTOS
表のデータを移入する方法を示しています。p_generate_md5
がYES
であるため、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;
このプロシージャを使用して、指定した問合せからコレクションを作成します。このメソッドは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');
パラメータ
表4-10では、CREATE_COLLECTION_FROM_QUERY2
プロシージャで使用可能なパラメータについて説明します。
表4-10 CREATE_COLLECTION_FROM_QUERY2プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255文字です。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在すると、エラーが戻されます。 |
|
コレクションのメンバーを移入するために実行する問合せ。p_queryが数値である場合、これはDBMS_SQLカーソルとみなされます。 |
|
有効な値には |
例
次の例は、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;
このプロシージャを使用して、指定した問合せ(バルク操作を使用)からコレクションを作成します。このメソッドは、CREATE_COLLECTION_FROM_QUERY
メソッドよりも非常に高速です。問合せはアプリケーション所有者として解析されます。同じ名前のコレクションが、カレント・アプリケーションIDの同じセッション内にカレント・ユーザー用として存在すると、アプリケーション・エラーが発生します。
このプロシージャは、バルク動的SQLを使用して、名前付きコレクションにフェッチ操作と挿入操作を実行します。このプロシージャには、2つの制限事項があります。
メンバー・データに対してMD5チェックサムは計算されません。
問合せ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 DEFAULT, p_values IN apex_applicatioN_globa.vc_arr2 DEFAULT, p_max_row_count IN NUMBER DEFAULT);
パラメータ
表4-11では、CREATE_COLLECTION_FROM_QUERY_B
プロシージャで使用可能なパラメータについて説明します。
表4-11 CREATE_COLLECTION_FROM_QUERY_Bプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255文字です。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在すると、エラーが戻されます。 |
|
コレクションのメンバーを移入するために実行する問合せ。p_queryが数値である場合、これはDBMS_SQLカーソルとみなされます。 |
|
問合せ文で使用されるバインド変数名の配列。 |
|
問合せ文内のバインド変数で使用されるバインド変数値の配列。 |
|
p_queryの問合せから戻され、コレクションに追加する必要がある行の最大数。 |
例
次の例は、CREATE_COLLECTION_FROM_QUERY_B
プロシージャを使用して、AUTO
というコレクションを作成し、そこにAUTOS
表のデータを移入する方法を示しています。
Begin l_query := 'select make, model, year from AUTOS'; APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY_B ( p_collection_name => 'AUTO', p_query => l_query); End;
このプロシージャを使用して、指定した問合せ(バルク操作を使用)からコレクションを作成します。このメソッドは、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 DEFAULT, p_values IN apex_applicatioN_globa.vc_arr2 DEFAULT, p_max_row_count IN NUMBER DEFAULT);
パラメータ
表4-12に、CREATE_COLLECTION_FROM_QUERY
B2プロシージャで使用可能なパラメータを示します。
表4-12 CREATE_COLLECTION_FROM_QUERYB2プロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255文字です。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在すると、エラーが戻されます。 |
|
コレクションのメンバーを移入するために実行する問合せ。p_queryが数値である場合、これはDBMS_SQLカーソルとみなされます。 |
|
問合せ文で使用されるバインド変数名の配列。 |
|
問合せ文内のバインド変数で使用されるバインド変数値の配列。 |
|
p_queryの問合せから戻され、コレクションに追加する必要がある行の最大数。 |
例
次の例は、CREATE_COLLECTION_FROM_QUERYB2
プロシージャを使用して、EMPLOYEES
というコレクションを作成し、そこにEMP
表のデータを移入する方法を示しています。最初の5列(mgr、sal、comm、deptnoおよびnull)はすべて数値で、次の5列はすべて日付です。p_generate_md5がNO
であるため、MD5
チェックサムは計算されません。
Begin l_query := 'select empno, sal, comm, deptno, null, hiredate, null, null, null, null, ename, job, mgr from emp'; APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERYB2 ( p_collection_name => 'EMPLOYEES', p_query => l_query, p_generate_md5 => 'NO'); End;
このプロシージャを使用して、カレント・アプリケーションIDに関係なく、Application Expressのカレント・セッションのカレント・ユーザーに属しているすべてのコレクションを削除します。
構文
APEX_COLLECTION.DELETE_ALL_COLLECTIONS;
パラメータ
なし。
例
この例は、DELETE_ALL_COLLECTIONS
プロシージャを使用して、カレント・セッションとアプリケーションIDのカレント・ユーザーに属しているすべてのコレクションを削除する方法を示しています。
Begin APEX_COLLECTION.DELETE_ALL_COLLECTIONS; End;
このプロシージャを使用して、アプリケーションIDに関係なく、Flowのカレント・セッションのカレント・ユーザーに属しているすべてのコレクションを削除します。
構文
APEX_COLLECTION.DELETE_ALL_COLLECTIONS_SESSION;
パラメータ
なし。
例
この例は、DELETE_ALL_COLLECTIONS_SESSION
プロシージャを使用して、アプリケーションIDに関係なく、カレント・セッションのカレント・ユーザーに属しているすべてのコレクションを削除する方法を示しています。
Begin APEX_COLLECTION.DELETE_ALL_COLLECTIONS_SESSION; End;
このプロシージャを使用して、名前付きコレクションを削除します。コレクションに属しているすべてのメンバーと、名前付きコレクションが削除されます。名前付きコレクションが、カレント・アプリケーションIDのカレント・セッション内に同じユーザー用として存在しないと、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.DELETE_COLLECTION ( p_collection_name IN VARCHAR2);
パラメータ
表4-13では、DELETE_COLLECTION
プロシージャで使用可能なパラメータについて説明します。
表4-13 DELETE_COLLECTIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
すべてのメンバーとともに削除するコレクションの名前。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
例
この例は、DELETE_COLLECTION
プロシージャを使用して、EMPLOYEE
コレクションを削除する方法を示しています。
Begin APEX_COLLECTION.DELETE_COLLECTION( p_collection_name => 'EMPLOYEE'); End;
このプロシージャを使用して、指定した名前付きコレクションから指定したメンバーを削除します。名前付きコレクションが、カレント・アプリケーションIDのカレント・セッション内に同じユーザー用として存在しないと、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.DELETE_MEMBER ( p_collection_name IN VARCHAR2, p_seq IN VARCHAR2);
パラメータ
表4-14では、DELETE_MEMBER
プロシージャで使用可能なパラメータについて説明します。
表4-14 DELETE_MEMBERパラメータ
パラメータ | 説明 |
---|---|
|
指定したメンバーを削除するコレクションの名前。最大長は255文字です。コレクション名は大/小文字が区別されず、大文字に変換されます。このコレクションが、同じセッションにカレント・ユーザー用として存在しないと、エラーが戻されます。 |
|
これは、削除するコレクション・メンバーの順序番号です。 |
例
この例は、DELETE_MEMBER
プロシージャを使用して、EMPLOYEES
というコレクションから順序番号が2のメンバーを削除する方法を示しています。
Begin APEX_COLLECTION.DELETE_MEMBER( p_collection_name => 'EMPLOYEES', p_seq => '2'); End;
このプロシージャを使用して、属性番号で指定した属性が特定の値と等しい場合に、指定した名前付きコレクションからすべてのメンバーを削除します。名前付きコレクションが、カレント・アプリケーションIDのカレント・セッション内に同じユーザー用として存在しないと、アプリケーション・エラーが発生します。指定した属性番号が無効であるか、または1から50の範囲外であると、エラーが発生します。
指定した属性値がnullの場合、名前付きコレクションのメンバーのうち、属性(p_attr_number
で指定)がnullであるすべてのメンバーが削除されます。
構文
APEX_COLLECTION.DELETE_MEMBERS ( p_collection_name IN VARCHAR2, p_attr_number IN VARCHAR2, p_attr_value IN VARCHAR2);
パラメータ
表4-14では、DELETE_MEMBERS
プロシージャで使用可能なパラメータについて説明します。
表4-15 DELETE_MEMBERSパラメータ
パラメータ | 説明 |
---|---|
|
指定したメンバーを削除するコレクションの名前。最大長は255文字です。コレクション名は大/小文字が区別されず、大文字に変換されます。このコレクションが、同じセッションにカレント・ユーザー用として存在しないと、エラーが戻されます。 |
|
削除のために指定した属性値との一致に使用されるメンバー属性の属性番号。有効な値は、1から50およびnullです。 |
|
削除のための一致に使用されるメンバー属性の属性値。最大長は4,000バイトです。これよりも大きいと、属性値は4,000バイトに切り捨てられます。 |
例
次の例では、5番目の文字属性がAPPLEである場合に、GROCERIESというコレクションのすべてのメンバーが削除されます。
Begin apex_collection.delete_members( p_collection_name => 'GROCERIES' p_attr_number => 5, p_attr_value => 'APPLE' ); Commit; End;
このファンクションを使用して、順序番号で指定したメンバーについて、その属性のメッセージ・ダイジェストを計算して戻します。メッセージ・ダイジェストのこの計算は、コレクションでネイティブに実行される計算と同じです。したがって、このファンクションの結果は、ビューwwv_flow_collectionsのMD5_ORIGINAL
列と比較できます。
指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.GET_MEMBER_MD5 ( p_collection_name IN VARCHAR2, p_seq IN NUMBER) RETURN VARCHAR2;
パラメータ
表4-16では、GET_MEMBER_MD5
ファンクションで使用可能なパラメータについて説明します。
表4-16 GET_MEMBER_MD5パラメータ
パラメータ | 説明 |
---|---|
|
メンバーのこの配列を追加するコレクションの名前。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
p_seq |
コレクション・メンバーの順序番号。 |
例
次の例では、GROCERIESコレクションの5番目のメンバーについて、MD5が計算されます。
declare l_md5 varchar2(4000); begin l_md5 := apex_collection.get_member_md5( p_collection_name => 'GROCERIES' p_seq => 10 ); end;
このプロシージャを使用して、指定した名前付きコレクションのメンバーと、配列に渡された値をマージします。名前付きコレクションが存在しない場合は作成されます。p_init_queryが指定されると、コレクションは指定されたSQL問合せから作成されます。名前付きコレクションが存在すると、次のことが行われます。
コレクション内に存在し、配列内に存在しない行が削除されます。
コレクション内および配列内に存在する行が更新されます。
配列内に存在し、コレクション内に存在しない行が挿入されます。
p_c001 PL/SQL表内の要素数は、すべてのPL/SQL表内のアイテムの合計数として使用されます。たとえば、p_c001.countが2で、p_c002.countが10である場合、マージされるメンバーは2つのみです。p_c001がnullの場合は、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.MERGE_MEMBERS ( p_collection_name IN VARCHAR2, p_seq IN APEX_APPLICATION_GLOBAL.VC_ARR2 DEFAULT empty_vc_arr, p_c001 IN APEX_APPLICATION_GLOBAL.VC_ARR2 DEFAULT empty_vc_arr, p_c002 IN APEX_APPLICATION_GLOBAL.VC_ARR2 DEFAULT empty_vc_arr, p_c003 IN APEX_APPLICATION_GLOBAL.VC_ARR2 DEFAULT empty_vc_arr, ... p_c050 IN APEX_APPLICATION_GLOBAL.VC_ARR2 DEFAULT empty_vc_arr, p_null_index IN NUMBER DEFAULT 1, p_null_value IN VARCHAR2 DEFAULT null, p_init_query IN VARCHAR2 DEFAULT null);
パラメータ
表4-17では、MERGE_MEMBERS
プロシージャで使用可能なパラメータについて説明します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-17 MERGE_MEMBERSプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。 |
|
マージする属性値の配列。最大長は4,000バイトです。4,000文字を超える文字属性は、4,000文字に切り捨てられます。p_c001配列のカウントは、すべての配列で使用されます。値が指定されないと、アクションは実行されません。 |
|
マージするNN属性値の属性。最大長は4,000バイトです。これよりも大きいと、属性値は4,000バイトに切り捨てられます。 |
|
マージするコレクションの順序番号を指定します。 |
|
この値で識別された要素がnullの場合、この行をnull行とみなします。たとえば、p_null_indexが3である場合、p_c003はnull行とみなされます。つまり、mergeファンクションは、この行を無視するように指示されます。これによって、null行がコレクションから削除されます。null索引は、null値とともに動作します。 |
p_null_value |
p_null_index引数と組み合せて使用します。この引数は、null値を識別します。この値をnullにすることはできません。この引数の通常の値は0(ゼロ)です。 |
p_init_query |
コレクションが存在しない場合、コレクションはこの問合せを使用して作成されます。 |
例
次の例では、従業員の表でコレクションを作成し、ローカル配列の内容とコレクションをマージします。さらに、2人の従業員の仕事を更新します。
DECLARE l_seq APEX_APPLICATION_GLOBAL.VC_ARR2; l_c001 APEX_APPLICATION_GLOBAL.VC_ARR2; l_c002 APEX_APPLICATION_GLOBAL.VC_ARR2; l_c003 APEX_APPLICATION_GLOBAL.VC_ARR2; BEGIN l_seq(1) := 1; l_c001(1) := 7369; l_c002(1) := 'SMITH'; l_c003(1) := 'MANAGER'; l_seq(2) := 2; l_c001(2) := 7499; l_c002(2) := 'ALLEN'; l_c003(2) := 'CLERK'; APEX_COLLECTION.MERGE_MEMBERS( p_collection_name => 'EMPLOYEES', p_seq => l_seq, p_c001 => l_c001, p_c002 => l_c002, p_c003 => l_c003, p_init_query => 'select empno, ename, job from emp order by empno'); END;
このプロシージャを使用して、指定した名前付きコレクションの特定のメンバーの順序番号を1つ下げて(1を引いて)調整し、順序番号と、その置換番号とを入れ替えます。たとえば、3は2になり、2は3になります。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーがコレクションで最も小さい順序であっても、アプリケーション・エラーは戻されません。
構文
APEX_COLLECTION.MOVE_MEMBER_DOWN ( p_collection_name IN VARCHAR2, p_seq IN NUMBER);
パラメータ
表4-19では、MOVE_MEMBER_DOWN
プロシージャで使用可能なパラメータについて説明します。
表4-18 MOVE_MEMBER_DOWNパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。カレント・ユーザーの指定した名前のこのコレクションが、同じセッションに存在しないと、エラーが戻されます。 |
|
1つ下げて移動させるコレクション・メンバーの順序番号を指定します。 |
例
この例は、EMPLOYEES
コレクションのメンバーの位置を1つ下げる方法を示しています。この例を実行した後、順序番号5は順序番号4になり、順序番号4は順序番号5になります。
BEGIN; APEX_COLLECTION.MOVE_MEMBER_DOWN( p_collection_name => 'EMPLOYEES', p_seq => '5' ); END;
このプロシージャを使用して、指定した名前付きコレクションの特定のメンバーの順序番号を1つ上げて(1を足して)調整し、順序番号と、その置換番号とを入れ替えます。たとえば、2は3になり、3は2になります。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーがコレクションで最も大きい順序であっても、アプリケーション・エラーは戻されません。
構文
APEX_COLLECTION.MOVE_MEMBER_UP ( p_collection_name IN VARCHAR2, p_seq IN NUMBER);
パラメータ
表4-19では、MOVE_MEMBER_UP
プロシージャで使用可能なパラメータについて説明します。
表4-19 MOVE_MEMBER_UPパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。カレント・ユーザーの指定した名前のこのコレクションが、同じセッションに存在しないと、エラーが戻されます。 |
|
1つ上げて移動させるコレクション・メンバーの順序番号を指定します。 |
例
この例は、EMPLOYEES
コレクションのメンバーの位置を1つ下げる方法を示しています。この例を実行した後、順序番号5は順序番号6になり、順序番号6は順序番号5になります。
BEGIN; APEX_COLLECTION.MOVE_MEMBER_UP( p_collection_name => 'EMPLOYEES', p_seq => '5' ); END;
名前付きコレクションにこのプロシージャを使用して、各メンバーのseq_id
値を更新し、順序内に欠落が存在しないようにします。たとえば、あるコレクションの順序番号が1、2、3、5、8、9である場合、一連の順序番号は1、2、3、4、5、6となります。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.RESEQUENCE_COLLECTION ( p_collection_name IN VARCHAR2);
パラメータ
表4-20では、RESEQUENCE_COLLECTION
プロシージャで使用可能なパラメータについて説明します。
表4-20 RESEQUENCE_COLLECTIONパラメータ
パラメータ | 説明 |
---|---|
|
順序変更を行うコレクションの名前。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
例
この例は、DEPARTMENTS
コレクションで順序変更を行い、順序番号内での欠落を削除する方法を示しています。
BEGIN; APEX_COLLECTION.RESEQUENCE_COLLECTION ( p_collection_name => 'DEPARTMENTS'); END;
このプロシージャを使用して、特定のコレクションのコレクション変更フラグをリセット(変更されていないとしてマーク)します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.RESET_COLLECTION_CHANGED ( p_collection_name IN VARCHAR2);
パラメータ
表4-21では、RESET_COLLECTION_CHANGED
プロシージャで使用可能なパラメータについて説明します。
表4-21 RESET_COLLECTION_CHANGEDパラメータ
パラメータ | 説明 |
---|---|
|
コレクション変更フラグをリセットするコレクションの名前。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
例
この例は、DEPARTMENTS
コレクションの変更フラグをリセットする方法を示しています。
BEGIN; APEX_COLLECTION.RESET_COLLECTION_CHANGED ( p_collection_name => 'DEPARTMENTS'); END;
このプロシージャを使用して、ユーザーのカレント・セッション内のすべてのコレクションのコレクション変更フラグをリセット(変更されていないとしてマーク)します。
構文
APEX_COLLECTION.RESET_COLLECTION_CHANGED_ALL; (
パラメータ
なし。
例
この例は、ユーザーのカレント・セッションのすべてのコレクションの変更フラグをリセットする方法を示しています。
BEGIN; APEX_COLLECTION.RESET_COLLECTION_CHANGED_ALL; END;
このプロシージャを使用して、特定のコレクションのメンバーをp_sort_on_column_numberで指定した列番号で並べ替えます。これによって、コレクションが、コレクション内の特定の列/属性でソートされ、欠落がないように各番号の順序番号が再割り当てされます。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.SORT_MEMBERS ( p_collection_name IN VARCHAR2, p_sort_on_column_number IN NUMBER);
パラメータ
表4-22では、SORT_MEMBERS
プロシージャで使用可能なパラメータについて説明します。
表4-22 SORT_MEMBERSパラメータ
パラメータ | 説明 |
---|---|
|
ソートするコレクションの名前。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
|
コレクションのソートに使用する列番号。 |
例
この例では、DEPARTMENTS
コレクションの列2は部門の場所です。コレクションは部門の場所にしたがって並べ替えられます。
BEGIN; APEX_COLLECTION.SORT_MEMBERS ( p_collection_name => 'DEPARTMENTS', p_sort_on_column_number => '2'; END;
このプロシージャを使用して、名前付きコレクションからすべてのメンバーを削除します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.TRUNCATE_COLLECTION ( p_collection_name IN VARCHAR2);
パラメータ
表4-23では、TRUNCATE_COLLECTION
プロシージャで使用可能なパラメータについて説明します。
表4-23 TRUNCATE_COLLECTIONパラメータ
パラメータ | 説明 |
---|---|
|
切り捨てるコレクションの名前。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
例
この例は、DEPARTMENTSコレクションからすべてのメンバーを削除する方法を示しています。
BEGIN; APEX_COLLECTION.TRUNCATE_COLLECTION( p_collection_name => 'DEPARTMENTS'); END;
このプロシージャを使用して、特定の名前付きコレクション内の指定したメンバーを更新します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。
注意: このプロシージャを使用すると、識別された列が設定され、識別されない列は無効化されます。他の列の値に影響を及ぼすことなく、特定の列を更新する必要がある場合は、「UPDATE_MEMBER_ATTRIBUTEプロシージャのシグネチャ1」を使用します。 |
構文
APEX_COLLECTION.UPDATE_MEMBER ( p_collection_name IN VARCHAR2, p_seq IN VARCHAR2 DEFAULT NULL, p_c001 IN VARCHAR2 DEFAULT NULL, p_c002 IN VARCHAR2 DEFAULT NULL, p_c003 IN VARCHAR2 DEFAULT NULL, ... p_c050 IN VARCHAR DEFAULT NULL, p_n001 IN NUMBER DEFAULT NULL, p_n002 IN NUMBER DEFAULT NULL, p_n003 IN NUMBER DEFAULT NULL, p_n004 IN NUMBER DEFAULT NULL, p_n005 IN NUMBER DEFAULT NULL, p_d001 IN DATE DEFAULT NULL, p_d002 IN DATE DEFAULT NULL, p_d003 IN DATE DEFAULT NULL, p_d004 IN DATE DEFAULT NULL, p_d005 IN DATE DEFAULT NULL, p_clob001 IN CLOB DEFAULT empty_clob(), p_blob001 IN BLOB DEFAULT empty-blob(), p_xmltype001 IN XMLTYPE DEFAULT NULL);
パラメータ
表4-24では、UPDATE_MEMBER
プロシージャで使用可能なパラメータについて説明します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-24 UPDATE_MEMBERパラメータ
パラメータ | 説明 |
---|---|
|
更新するコレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。 |
|
追加するメンバーの属性値。最大長は4,000バイトです。4,000文字を超える文字属性は、4,000文字に切り捨てられます。 |
|
追加または更新する数値属性の属性値。 |
|
追加または更新する日付属性の属性値。 |
|
4,000文字を超えるコレクション・メンバー属性には、p_clob001を使用します。 |
|
バイナリ・コレクション・メンバー属性には、p_blob001を使用します。 |
|
整形式XMLを格納するには、p_xmltype001を使用します。 |
例
Departmentsというコレクションの2番目のメンバーを更新します。1つ目のメンバー属性をEngineeringに、2つ目のメンバー属性をSalesに更新します。
BEGIN; APEX_COLLECTION.UPDATE_MEMBER ( p_collection_name => 'Departments', p_seq => '2', p_c001 => 'Engineering', p_c002 => 'Sales');
このプロシージャを使用して、特定の名前付きコレクションのメンバーの配列を更新します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。p_seq PL/SQL表の要素のカウントは、すべてのPL/SQL表のアイテムの合計数として使用されます。つまり、p_seq.count = 2かつp_c001.count = 10である場合は、更新されるメンバーは2つのみです。p_seqがnullであると、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。
構文
APEX_COLLECTION.UPDATE_MEMBERS ( p_collection_name IN VARCHAR2, p_seq IN wwv_flow_global.VC_ARR2 DEFAULT empty_vc_arr, p_c001 IN wwv_flow_global.VC_ARR2 DEFAULT empty_vc_arr, p_c002 IN wwv_flow_global.VC_ARR2 DEFAULT empty_vc_arr, p_c003 IN wwv_flow_global.VC_ARR2 DEFAULT empty_vc_arr, ... p_c050 IN wwv_flow_global.VC_ARR2 DEFAULT empty_vc_arr, p_n001 IN wwv_flow_global.N_ARR DEFAULT empty_n_arr, p_n002 IN wwv_flow_global.N_ARR DEFAULT empty_n_arr, p_n003 IN wwv_flow_global.N_ARR DEFAULT empty_n_arr, p_n004 IN wwv_flow_global.N_ARR DEFAULT empty_n_arr, p_n005 IN wwv_flow_global.N_ARR DEFAULT empty_n_arr, p_d001 IN wwv_flow_global.D_ARR DEFAULT empty_d_arr, p_d002 IN wwv_flow_global.D_ARR DEFAULT empty_d_arr, p_d003 IN wwv_flow_global.D_ARR DEFAULT empty_d_arr, p_d004 IN wwv_flow_global.D_ARR DEFAULT empty_d_arr, p_d005 IN wwv_flow_global.D_ARR DEFAULT empty_d_arr)
パラメータ
表4-25では、UPDATE_MEMBERS
プロシージャで使用可能なパラメータについて説明します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-25 UPDATE_MEMBERSパラメータ
パラメータ | 説明 |
---|---|
|
更新するコレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。 |
|
更新するメンバー順序番号の配列。p_seq配列のカウントは、すべての配列で使用されます。 |
|
更新する属性値の配列。 |
|
数値の属性値 |
|
更新する日付属性値の配列。 |
例
DECLARE l_seq apex_application_global.vc_arr2; l_carr apex_application_global.vc_arr2; l_narr apex_application_global.n_arr; l_darr apex_application_global.d_arr; BEGIN l_seq(1) := 10; l_seq(2) := 15; l_carr(1) := 'Apples'; l_carr(2) := 'Grapes'; l_narr(1) := 100; l_narr(2) := 150; l_darr(1) := sysdate; l_darr(2) := sysdate; APEX_COLLECTION.UPDATE_MEMBERS ( p_collection_name => 'Groceries', p_seq => l_seq, p_c001 => l_carr, p_n001 => l_narr, p_d001 => l_darr); END;
特定の名前付きコレクション内の指定したメンバー属性を更新します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。指定した属性番号が無効であるか、または1から50の範囲外であると、エラーが発生します。4,000バイトを超える属性値は、4,000バイトに切り捨てられます。
構文
APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name IN VARCHAR2, p_seq IN VARCHAR2, p_attr_number IN VARCHAR2, p_attr_value IN VARCHAR2);
パラメータ
表4-26では、UPDATE_MEMBER_ATTRIBUTE
プロシージャのシグネチャ1で使用可能なパラメータについて説明します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-26 UPDATE_MEMBER_ATTRIBUTEのシグネチャ1のパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
|
更新するコレクション・メンバーの順序番号。 |
|
更新するメンバー属性の属性番号。有効な値は1から50です。この範囲外の番号はすべて無視されます。 |
|
更新するメンバー属性の属性値。 |
例
1つ目のメンバー属性をEngineering
に、2つ目のメンバー属性をSales
に更新して、Departments
というコレクションの2番目のメンバーを更新します。
BEGIN; APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name =. 'Departments', p_seq => '2', p_attr_number => '1', p_attr_value => 'Engineering'); END;
特定の名前付きコレクション内の指定したCLOBメンバー属性を更新します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。指定した属性番号が無効であるか、または有効な範囲(現在、CLOBでは1のみ)の外であると、エラーが発生します。
構文
APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name IN VARCHAR2, p_seq IN VARCHAR2, p_clob_number IN NUMBER, p_clob_value IN CLOB);
パラメータ
表4-27では、UPDATE_MEMBER_ATTRIBUTE
プロシージャのシグネチャ2で使用可能なパラメータについて説明します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-27 UPDATE_MEMBER_ATTRIBUTEのシグネチャ2のパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
|
更新するコレクション・メンバーの順序番号。 |
|
更新するCLOBメンバー属性の属性番号。有効な値は1です。この範囲外の番号はすべて無視されます。 |
|
更新するCLOBメンバー属性の属性値。 |
例
次の例では、Departments
というコレクションのコレクション順序番号2の唯一のCLOB属性を、値Engineering
に設定します。
BEGIN; APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name =. 'Departments', p_seq => '2', p_clob_number => '1', p_clob_value => 'Engineering'); END;
特定の名前付きコレクション内の指定したBLOBメンバー属性を更新します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。指定した属性番号が無効であるか、または有効な範囲(現在、BLOBでは1のみ)の外であると、エラーが発生します。
構文
APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name IN VARCHAR2, p_seq IN VARCHAR2, p_blob_number IN NUMBER, p_blob_value IN BLOB);
パラメータ
表4-28では、UPDATE_MEMBER_ATTRIBUTE
プロシージャのシグネチャ3で使用可能なパラメータについて説明します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-28 UPDATE_MEMBER_ATTRIBUTEのシグネチャ3のパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
|
更新するコレクション・メンバーの順序番号。 |
|
更新するBLOBメンバー属性の属性番号。有効な値は1です。この範囲外の番号はすべて無視されます。 |
|
更新するBLOBメンバー属性の属性値。 |
例
次の例では、Departments
というコレクションのコレクション順序番号2の唯一のBLOB属性をBLOB変数の値l_blob_content
に設定します。
BEGIN; APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name =. 'Departments', p_seq => '2', p_blob_number => '1', p_blob_value => l_blob_content); END;
特定の名前付きコレクション内の指定したXMLTYPEメンバー属性を更新します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。指定した属性番号が無効であるか、または有効な範囲(現在、XMLTYPEでは1のみ)の外であると、エラーが発生します。
構文
APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name IN VARCHAR2, p_seq IN VARCHAR2, p_xmltype_number IN NUMBER, p_xmltype_value IN BLOB);
パラメータ
表4-29に、UPDATE_MEMBER_ATTRIBUTE
プロシージャのシグネチャ4で使用可能なパラメータを示します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-29 UPDATE_MEMBER_ATTRIBUTEのシグネチャ4のパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
|
更新するコレクション・メンバーの順序番号。 |
|
更新するXMLTYPEメンバー属性の属性番号。有効な値は1です。この範囲外の番号はすべて無視されます。 |
|
更新するXMLTYPEメンバー属性の属性値。 |
例
次の例では、Departments
というコレクションのコレクション順序番号2の唯一のXML属性をXMLType変数の値l_xmltype_content
に設定します。
BEGIN; APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name =. 'Departments', p_seq => '2', p_xmltype_number => '1', p_xmltype_value => l_xmltype_content); END;
特定の名前付きコレクション内の指定したNUMBERメンバー属性を更新します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。指定した属性番号が無効であるか、または有効な範囲(現在、NUMBERでは1から5のみ)の外であると、エラーが発生します。
構文
APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name IN VARCHAR2, p_seq IN VARCHAR2, p_attr_number IN NUMBER, p_number_value IN NUMBER);
パラメータ
表4-30では、UPDATE_MEMBER_ATTRIBUTE
プロシージャのシグネチャ5で使用可能なパラメータについて説明します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-30 UPDATE_MEMBER_ATTRIBUTEのシグネチャ5のパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
|
更新するコレクション・メンバーの順序番号。 |
|
更新するNUMBERメンバー属性の属性番号。有効な値は1から5です。この範囲外の番号はすべて無視されます。 |
|
更新するNUMBERメンバー属性の属性値。 |
例
次の例では、Departments
というコレクションのコレクション順序番号2の1つ目の数値属性を値3000に設定します。
BEGIN; APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name =. 'Departments', p_seq => '2', p_attr_number => '1', p_number_value => 3000); END;
特定の名前付きコレクション内の指定したDATEメンバー属性を更新します。指定した名前のコレクションが、同じセッションのカレント・ユーザー用およびカレント・アプリケーションID用として存在しないと、アプリケーション・エラーが発生します。順序番号p_seqで指定したメンバーが存在しないと、アプリケーション・エラーが発生します。指定した属性番号が無効であるか、または有効な範囲(現在、DATEでは1から5のみ)の外であると、エラーが発生します。
構文
APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name IN VARCHAR2, p_seq IN VARCHAR2, p_attr_number IN NUMBER, p_number_value IN DATE);
パラメータ
表4-30では、UPDATE_MEMBER_ATTRIBUTE
プロシージャのシグネチャ6で使用可能なパラメータについて説明します。
注意: 4,000文字を超える文字属性は、4,000文字に切り捨てられます。また、追加されるメンバーの数は、1番目の配列内の要素の数に基づきます。 |
表4-31 UPDATE_MEMBER_ATTRIBUTEのシグネチャ6のパラメータ
パラメータ | 説明 |
---|---|
|
コレクションの名前。最大長は255バイトです。コレクション名は大/小文字が区別されず、大文字に変換されます。このコレクションが、カレント・ユーザーの指定された名前で、同じセッションに存在しないと、エラーが戻されます。 |
|
更新するコレクション・メンバーの順序番号。 |
|
更新するDATEメンバー属性の属性番号。有効な値は1から5です。この範囲外の番号はすべて無視されます。 |
|
更新するDATEメンバー属性の属性値。 |
例
Departments
というコレクションの2番目のコレクション・メンバーの1つ目の属性を更新して、値100に設定します。
BEGIN; APEX_COLLECTION.UPDATE_MEMBER_ATTRIBUTE ( p_collection_name =. 'Departments', p_seq => '2', p_attr_number => '1', p_number_value => 100 ); END;