16.5.3 動的リストの作成
動的リストは、SQL問合せまたは実行時に実行されるPL/SQLファンクションに基づいています。
- 動的リストの作成について
 動的リストの作成に関連するステップについて説明します。
- 動的リスト構文の理解
 動的リスト構文について説明します。
- 動的リストを最初から作成
 リストの作成ウィザードを実行して動的リストを最初から作成します。
親トピック: リストの作成
16.5.3.1 動的リストの作成について
動的リストの作成に関連するステップについて説明します。
動的リストにより、SQL問合せまたはSQL問合せを戻すPL/SQLファンクションからのアイテムに基づくリスト・コンポーネントを作成できます。これらの動的リストは、テーマのリスト・テンプレートを使用してページにレンダリングできます。
動的リストの作成プロセスでは、次のステップを実行します。
- 
                        
                        ステップ1: 次のいずれかの方法で動的リストを作成します。 - 
                              
                              リストの作成ウィザードを実行して、「動的」リスト・タイプを選択します。 
- 
                              
                              リストのコピー・ウィザードを実行して既存の動的リストをコピーします。 
 
- 
                              
                              
- 
                        
                        ステップ2: リスト問合せを定義します。 - 
                              
                              問合せソース・タイプを選択します。オプションは次のとおりです。 - 
                                    
                                    SQL問合せ 
- 
                                    
                                    SQL問合せを戻すファンクション 
 
- 
                                    
                                    
- 
                              
                              SQL問合せを入力します。 
 
- 
                              
                              
- 
                        ステップ3: リスト・リージョンを作成して、ページにリストを追加します。 
親トピック: 動的リストの作成
16.5.3.2 動的リスト構文の理解
動的リスト構文について説明します。
SQL問合せまたはSQL問合せを戻すファンクションを使用して、動的リストを作成します。Oracle APEXは、次の表に示すようにSELECT構文のリストの列位置を使用して問合せの結果を解釈します。列の別名は無視されるため、問合せで返される情報を最も適切に示す名前を選択します。SQL文では、SELECT構文のリストに2つ以上の列を含める必要がありますが、必要に応じて最大17列を返すことができます。すべてのオプション列は、NULL値をプレースホルダとして受け入れ、後の列位置に対してNULL以外の値を指定できます。たとえば、リスト・リージョンの「外観」の「リスト・テンプレート」属性にバッジ・リストを選択した場合、ユーザー属性1に対応する列8の値によって、バッジ内に表示されるテキストが決まります。
                     
ヒント:
「リスト」リージョンのドキュメントでは、異なる「外観」テンプレート・オプションで使用されるユーザー属性値が説明されています。| 列 | 用途 | データ型 | 必須 | ノート | 
|---|---|---|---|---|
| 1 | レベル | 
 | Yes | 階層リストの深さレベル。それ以外の場合はNULLを使用します | 
| 2 | Label | 
 | Yes | リスト・エントリに表示するテキスト | 
| 3 | ターゲットURL | 
 | No | リスト・エントリの選択時にブランチ先となるターゲットURL | 
| 4 | 現在かどうか | 
 | No | リスト・エントリの動作を制御します。有効な値は'YES'、'NO'およびNULLです | 
| 5 | アイコン名 | 
 | No | リスト・エントリに表示されるアイコンの名前 | 
| 6 | イメージ属性 | 
 | No | 幅や高さなどのイメージの属性 | 
| 7 | イメージの | 
 | No | ユーザーがイメージ上でクリックする必要のあるテンプレートでアクセシビリティに必要なイメージ | 
| 8 | ユーザー属性1 | 
 | No | なし | 
| 9 | ユーザー属性2 | 
 | No | なし | 
| 10 | ユーザー属性3 | 
 | No | なし | 
| 11 | ユーザー属性4 | 
 | No | なし | 
| 12 | ユーザー属性5 | 
 | No | なし | 
| 13 | ユーザー属性6 | 
 | No | なし | 
| 14 | ユーザー属性7 | 
 | No | なし | 
| 15 | ユーザー属性8 | 
 | No | なし | 
| 16 | ユーザー属性9 | 
 | No | なし | 
| 17 | ユーザー属性10 | 
 | No | なし | 
たとえば、従業員名の動的リストに対する単純な問合せは次のようになります。
select null  c1_level,
       ename c2_name_for_label
from emp
order by enameリスト内の各従業員名の横に個人アイコンを含めるには、次のように、間の列にNULLを選択し、5列目の位置でfa-userのようなアイコンの名前を返します。
                     
select null      c1_level,
       ename     c2_name_for_label,
       null      c3_target_url,
       null      c4_is_current,
       'fa-user' c5_icon_name
from emp
order by enameリスト・エントリをページ10にリンクするには、P10_EMPNOページ・アイテムのEMPNOの値を渡して、次のように3番目の列にターゲットURLの値を指定するように問合せを調整します。
                     
select null      c1_level,
       ename     c2_name_for_label,
       apex_page.get_url(p_page   => 10,
                         p_items  => 'P10_EMPNO',
                         p_values => EMPNO) c3_target_url,
       null      c4_is_current,
       'fa-user' c5_icon_name
from emp
order by ename次の問合せは、ユーザー属性の値を返します。前の問合せを拡張し、ユーザー属性1の列8のスロットに各従業員の給与(sal)を返します。「リスト」リージョンの「外観」、「リスト・テンプレート」オプション、バッジ・リストでは、このユーザー属性1の値をバッジに表示するテキストとして使用します。
                     
select null      c1_level,
       ename     c2_name_for_label,
       apex_page.get_url(p_page   => 10,
                         p_items  => 'P10_EMPNO',
                         p_values => EMPNO) c3_target_url,
       null      c4_is_current,
       'fa-user' c5_icon_name,
       null      c6_icon_attrs,
       null      c7_icon_alt_text,
       sal       c8_user_attr1_badge_text
from emp
order by enameselect level                                     c1_level,
       ename                                     c2_name_for_label
       apex_page.get_url(p_page   => 10,
                         p_items  => 'P10_EMPNO',
                         p_values => EMPNO)      c3_target_url,
       null                                      c4_is_current,
       'fa-user'                                 c5_icon_name
from emp
connect by prior empno = mgr
start with mgr is nullファンクションによって定義されたSQL問合せを戻す必要がある場合は、同じルールが適用されます。次の例に示すように、PL/SQLの複数行の文字列リテラル構文q'[ ... ]'を使用すると、複数の行にまたがる問合せテキストをより簡単に返すことができます。正しくフォーマットされたSQL文を返す構文が許可されます。
                     
return q'[
   select null      c1_level,
          ename     c2_name_for_label,
          apex_page.get_url(p_page   => 10,
                            p_items  => 'P10_EMPNO',
                            p_values => EMPNO) c3_target_url,
          null      c4_is_current,
          'fa-user' c5_icon_name
   from emp
   order by ename
]';親トピック: 動的リストの作成