20.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            apex_exec.t_column_name,
  p_value_column          IN            apex_exec.t_column_name,
  p_overall_label         IN            t_label                   DEFAULT NULL,
  p_overall_value_column  IN            apex_exec.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;