sql >> データベース >  >> RDS >> Oracle

Oracle apex で動的列を表示する方法はありますか

    最初に一般的なヒント:変数 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 なし .




    1. MySQL-NULLセーフNOT等しい演算子

    2. SQLのmonthnameでグループ化

    3. シェルスクリプトからsqlplusを実行している間のエラー処理の管理

    4. MySqlでの動的な列名の選択