最初に一般的なヒント:変数 l_sql
を出力します dbms_output.put_line
を使用してコンソールに または、挿入できるデバッグテーブルを使用します。また、その変数のデータ型にも注意してください。 SQL を拡張する必要がある場合は、CLOB
を使用する必要があるポイントに到達できます。 varchar2
の代わりに変数 .
問題を完全に分析したい場合は、テーブル構造とテスト データを提供する必要があります。したがって、最初にいくつかの一般的な説明を行います。
Use Generic Column Names
永続的で変更不可能な量の列がある場合は問題ありません。ただし、列の順序や量さえも変更できる場合、クエリの結果が Generic Column Count
よりも多くの列になるとページにエラーが表示されるため、これは悪い考えです。
オプション 1:クエリで列エイリアスを使用する
PL/SQL Function Body returning SQL Query
を強化します 次のように、詳細な表示名を出力する方法で:
return 'select 1 as "Your verbose column name", 2 as "Column #2", 3 as "Column #3" from dual';
それは次のようになります:
デザイナでも列名がこのように表示され、APEX は関数を再検証する場合にのみこれらの列名を更新するという欠点があります。 Your verbose column name
の内部名を持つ列を参照するのは難しいでしょう。 プロセス コードまたは動的アクションで。
ただし、たとえば PL/SQL Function Body
を外部化するなどして、APEX に通知せずに列名を変更しても機能します。
オプション 2:カスタムの列見出しを使用する
少し隠されていますが、完全にカスタムの列見出しのオプションもあります. 属性のほぼ最後です レポート領域のページ。
ここで、列名を返す関数を指定することもできます。この関数は、それ自体が列名を返す SQL クエリを返すことになっていないことに注意してください。代わりに、コロンで区切られた列名を返します。 .
この方法を使用すると、デザイナーで列を簡単に識別して参照できます。
オプション 3:両方
Generic Column Names をオフにし、クエリが簡単に識別および参照できる列名を返すようにし、custom column headings
を使用できるようにします。 関数はユーザーの詳細な名前を返します。
個人的な意見
レポート ページ自体のシャトル アイテムを使用して、列の量と順序を変更できるプロダクション アプリケーションで 3 番目のオプションを使用しています。少し時間がかかりましたが、動的な PIVOT
のように魅力的に機能するようになりました PIVOT
なし .