15.3 ADD_COLUMNプロシージャ

このプロシージャは、列のコレクションに列を追加します。列のサブセットのみをリクエストするために、列のコレクションをOPEN_*_CONTEXTコールに渡すことができます。これは、SQL文が含まれないWebソースに特に役立ちます。列配列を渡さない場合や、空の列配列を渡した場合は、Webソースに定義されているすべての列がフェッチされます。

構文

procedure add_column(
    p_columns         in out nocopy t_columns,
    p_column_name     in            varchar2,
    p_data_type       in            t_data_type default null,
    p_sql_expression  in            varchar2    default null,
    p_format_mask     in            varchar2    default null,
    p_is_primary_key  in            boolean     default false,
    p_is_query_only   in            boolean     default false,
    p_is_returning    in            boolean     default false,
    p_is_checksum     in            boolean     default false );

パラメータ

表15-1 ADD_COLUMNプロシージャのパラメータ

パラメータ 説明

p_columns

列配列。

p_column_name

列名。

p_data_type

列のデータ型。

p_sql_expression

他の列から列を導出するためのSQL式。

p_format_mask

この列に使用する書式マスク。

p_is_primary_key

主キー列かどうか(デフォルトはfalse)。

p_is_query_only

問合せのみの列をDMLコンテキストに書き込みません(デフォルトはfalse)。

p_is_returning

DMLの実行後に、RETURNING列を取得するかどうか(デフォルトはfalse)。

p_is_checksum

チェックサム(行バージョン)列であるかどうか(デフォルトはfalse)。

declare
    l_columns     apex_exec.t_columns;
    l_context     apex_exec.t_context;
begin
    apex_exec.add_column(
        p_columns     => l_columns,
        p_column_name => 'ENAME' );

    apex_exec.add_column(
        p_columns     => l_columns,
        p_column_name => 'SAL' );

    l_context := apex_exec.open_web_source_query(
        p_module_static_id => '{web source module static ID}', 
        p_columns          => l_columns
        p_max_rows         => 1000 );

        while apex_exec.next_row( l_context ) loop
           -- process rows here ...
        end loop;

    apex_exec.close( l_context );
exception
    when others then
         apex_exec.close( l_context );
         raise;    
end;