33.1 BUILD_REQUEST_BODYプロシージャ

このプロシージャは、RESTデータ・ソースDMLリクエストのリクエスト本文を作成します。リクエスト本文テンプレートが設定されている場合、#COLUMN#プレースホルダはDMLコンテキスト列の値に置き換えられます。この場合、リクエスト本文は任意のデータ形式にできます。

リクエスト本文テンプレートが設定されていない場合、ファンクションは次の構造を持つJSONを作成します。

{
   "{column1-name}": "{column1-value}",
   "{column2-name}": "{column2-value}",
   :
}

構文

APEX_PLUGIN_UTIL.BUILD_REQUEST_BODY (
    p_request_format       IN            wwv_flow_plugin_api.t_data_format,
    p_profile_columns      IN            wwv_flow_plugin_api.t_web_source_columns,
    p_values_context       IN            wwv_flow_exec_api.t_context,
    p_build_when_empty     IN            BOOLEAN,
    --
    p_request_body         IN OUT NOCOPY CLOB );

パラメータ

表33-1 BUILD_REQUEST_BODYのパラメータ

パラメータ 説明
p_request_format リクエスト形式(JSONまたはXML)。
p_profile_columns 列メタデータ(名前、データ型)。
p_values_context DML値を含むwwv_flow_exec_apiコンテキスト・オブジェクト。
p_build_when_empty p_request_bodyが空の場合、新しいリクエスト本文を作成するかどうか。
p_request_body 置換を実行するリクエスト本文テンプレート。

戻り値

表33-2 BUILD_REQUEST_BODYの戻り値

パラメータ 説明
p_request_body リクエスト本文(置換されたか、最初から作成されたもの)。

次の例では、プラグインDMLプロシージャ内でBUILD_REQUEST_BODYを使用します。

apex_plugin_util.build_request_body (
    p_plugin     in            apex_plugin.t_plugin,
    p_web_source in            apex_plugin.t_web_source,
    p_params     in            apex_plugin.t_web_source_dml_params,
    p_result     in out nocopy apex_plugin.t_web_source_dml_result )
IS
    l_web_source_operation apex_plugin.t_web_source_operation;
    l_request_body         clob;
BEGIN

    l_web_source_operation := apex_plugin_util.get_web_source_operation(
        p_web_source   => p_web_source,
        p_db_operation => apex_plugin.c_db_operation_insert,
        p_perform_init => true );

    apex_plugin_util.build_request_body(
        p_request_format       => apex_plugin.c_format_json,
        p_profile_columns      => p_web_source.profile_columns,
        p_values_context       => p_params.insert_values_context,
        p_build_when_empty     => true,
        p_request_body         => l_request_body );

    -- continue with APEX_PLUGIN_UTIL.MAKE_REST_REQUEST

END plugin_dml;