13.3 ADD_AGGREGATEプロシージャ

このプロシージャは、集計を集計コレクションに追加します。集計コレクションは、集計行を追加するためにEXPORTコールに渡すことができます。このプロシージャは、全体集計のためにコントロールブレークと組み合せて使用​​することも、スタンドアロンで使用することもできます。空の集計コレクションが渡された場合(または集計コレクションが渡されなかった場合)、集計行はエクスポートにレンダリングされません。

このプロシージャには集計列が必要です。値は、現在の集計合計(コントロール・ブレークの場合)または全体の合計です。

構文

PROCEDURE ADD_AGGREGATE(
    p_aggregates            IN OUT NOCOPY   t_aggregates,
    p_label                 IN              t_label,
    p_format_mask           IN              VARCHAR2                            DEFAULT NULL,
    p_display_column        IN              wwv_flow_exec_api.t_column_name,
    p_value_column          IN              wwv_flow_exec_api.t_column_name,
    p_overall_label         IN              t_label                             DEFAULT NULL,
    p_overall_value_column  IN              wwv_flow_exec_api.t_column_name     DEFAULT NULL );

パラメータ

パラメータ 説明
p_aggregates 集計コレクション。
p_label 集計ラベル。
p_format_mask 集計値に適用する書式マスク。
p_display_column 集計を表示する列の名前。
p_value_column 集計の値を含む列の名前。
p_overall_label 全体のラベル。
p_overall_value_column 全体集計の値を含む列の名前。

DECLARE
    l_aggregates     apex_data_export.t_aggregates;
    l_columns        apex_data_export.t_columns;
    l_context        apex_exec.t_context;
    l_export         apex_data_export.t_export;
BEGIN
    apex_data_export.add_aggregate(
        p_aggregates              => l_aggregates,
        p_label                   => 'Sum',
        p_format_mask             => 'FML999G999G999G999G990D00',
        p_display_column          => 'SAL',
        p_value_column            => 'AGGREGATE1',
        p_overall_label           => 'Total sum',
        p_overall_value_column    => 'OVERALL1' );
        
    apex_data_export.add_column( p_columns => l_columns, p_name => 'DEPTNO', p_is_column_break => true );
    apex_data_export.add_column( p_columns => l_columns, p_name => 'EMPNO');
    apex_data_export.add_column( p_columns => l_columns, p_name => 'ENAME');
    apex_data_export.add_column( p_columns => l_columns, p_name => 'SAL');

    l_context := apex_exec.open_query_context(
        p_location    => apex_exec.c_location_local_db,
        p_sql_query   => 'select deptno,
                                    empno, 
                                    ename, 
                                    sal,
                                    sum( sal)  over ( partition by deptno ) as AGGREGATE1,
                                    sum( sal)  over ( ) as OVERALL1
                            FROM emp
                            order by deptno' );

    l_export := apex_data_export.export (
                        p_context      => l_context,
                        p_format       => apex_data_export.c_format_pdf,
                        p_columns      => l_columns,
                        p_aggregates   => l_aggregates );

    apex_exec.close( l_context );

    apex_data_export.download( p_export => l_export );

EXCEPTION
    WHEN others THEN
        apex_exec.close( l_context );
        raise;
END;