20.4 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 );

パラメータ

表20-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;