コンテンツにスキップ

帳票生成API PL/SQLリファレンス

ドキュメント対応バージョン

バージョン 更新日
DBXFORM - Version 1 2024/05/31

目次

初めに

本書は、帳票ファイルを生成する際に必要となるPL/SQLパッケージのインターフェースを説明します。

想定読者
アプリケーション開発者

DBXFORM パッケージ

SET_RESULT_FORM プロシージャ

SQL実行結果のデータが埋め込まれた帳票ファイルデータを生成します。生成したファイルはp_blob_locに指定したLOBロケータに設定します。 LOBロケータにすでにデータが存在する場合、LOBロケータの内容を上書きします。

PROCEDURE "SET_RESULT_FORM"(
  p_blob_loc                     IN OUT NOCOPY BLOB,
  p_template_json                IN     JSON_OBJECT_T,
  p_sql_key_json                 IN     JSON_OBJECT_T default NULL,
  p_file_estimate_limit          IN     NUMBER default 100
)
引数 説明
p_blob_loc 変換先のLOBロケータを指定します。
p_template_json DBXFORM帳票開発アプリにて作成した帳票テンプレートJSONファイルを指定します。
p_sql_key_json SQLに指定したハッシュ(#)で囲まれたリテラル文字を変換するJSONオブジェクトを指定します。ADD_SQL_KEYプロシージャでキーを追加します。
p_file_estimate_limit SQLのデータから予測されるファイルの出力件数の制限値です。

GET_RESULT_FORM ファンクション

p_template_jsonに指定した帳票テンプレートJSONファイルを基に、SQL実行結果のデータが埋め込まれた帳票ファイルをBLOB形式で戻します。戻されるBLOBはSET_RESULT_FORMプロシージャを利用した場合と同じファイルです。

DBXFORM.GET_RESULT_FORM(
  p_template_json                IN     JSON_OBJECT_T,
  p_sql_key_json                 IN     JSON_OBJECT_T default NULL,
  p_file_estimate_limit          IN     NUMBER default 100
) RETURN BLOB
引数 説明
p_template_json DBXFORM帳票開発アプリにて作成した帳票テンプレートJSONファイルを指定します。
p_sql_key_json SQLに指定したハッシュ(#)で囲まれたリテラル文字を変換するJSONオブジェクトを指定します。ADD_SQL_KEYプロシージャでキーを追加します。
p_file_estimate_limit SQLのデータから予測されるファイルの出力件数の制限値です。

SET_OUTPUT_FORMAT プロシージャ

p_template_jsonに指定した帳票テンプレートJSONファイルで出力するファイルの拡張子を変更します。例えば、p_extensionにhtml,pdf,md,docjson等を指定します。

PROCEDURE "SET_OUTPUT_FORMAT" (
  p_template_json                IN OUT NOCOPY JSON_OBJECT_T,
  p_extension                    IN     VARCHAR2
)
引数 説明
p_template_json DBXFORM帳票開発アプリにて作成した帳票テンプレートJSONファイルを指定します。
p_extension 出力するファイルの拡張子を指定します。

SET_LOCAL_FILE プロシージャ

p_template_jsonに指定した帳票テンプレートJSONファイルに画像などのファイルを追加します。例えば、htmlのimgタグに画像のファイルパス(p_file_path)が指定されている場合などに利用できます。

PROCEDURE "SET_LOCAL_FILE" (
  p_template_json                IN OUT NOCOPY JSON_OBJECT_T,
  p_add_file                     IN     BLOB,
  p_file_path                    IN     VARCHAR2
)
引数 説明
p_template_json DBXFORM帳票開発アプリにて作成した帳票テンプレートJSONファイルを指定します。
p_add_file テンプレートで参照するファイルを指定します。
p_file_path ファイルパスは./から始まる必要があり、p_template_json内のテンプレートファイルの記載と一致する必要があります。

SET_MERGEPDF_NUMBERING プロシージャ

p_template_jsonに指定したPDF結合用帳票テンプレートJSONファイルのナンバリングオプションを変更します。各オプションの引数(p_skip_page,p_start_number,p_font_size,p_format_string)に設定した値で更新します。 オプションの引数に値を設定しない場合は、元のオプションは変更されずに処理を終了します。

PROCEDURE "SET_MERGEPDF_NUMBERING" (
  p_template_json                IN OUT NOCOPY JSON_OBJECT_T,
  p_skip_page                    IN     NUMBER   default NULL,
  p_start_page_number            IN     NUMBER   default NULL,
  p_font_size                    IN     NUMBER   default NULL,
  p_format_string                IN     VARCHAR2 default NULL
)
引数 説明
p_template_json DBXFORM帳票開発アプリにて作成したPDF結合用帳票テンプレートJSONファイルを指定します。
p_skip_page 描画テキストを表示しないページ(表紙など)を指定します。
p_start_page_number 表示開始時のページ番号を指定します。
p_font_size 描画テキストの文字サイズを指定します。
p_format_string 描画するテキストを指定します。(ページ番号は#PAGE#、最大ページ数は#TOTALPAGE#で指定)

ADD_SQL_KEY プロシージャ

帳票テンプレートJSONファイルに定義されたSQLの、変数に入れる値を指定します。対象のSQLはSQLグループに設定した各SQLです。 SQLに記載した変数をp_keyに指定し、p_dataに指定した値に変換してSQLを実行します。p_keyに指定する値はハッシュ(#)を除いた値です: #<p_keyに指定する値>#p_sql_key_jsonに指定したJSONオブジェクトに変数値が追加されます。実行結果のJSONオブジェクトをGET_RESULT_FORMファンクションで指定します。

DBXFORM.ADD_SQL_KEY(
    p_sql_key_json   IN OUT NOCOPY JSON_OBJECT_T,
    p_key            IN     VARCHAR2,
    p_data           IN     VARCHAR2,
    p_value_type     IN     VARCHAR2
)
引数 説明
p_sql_key_json 変数を保存するためのJSONオブジェクトです
p_key SQLグループで指定したSQLの変数を指定するための変数名です。
p_data 変数に指定される変換値です。
p_value_type 変換値のデータ種別です。(string/number)

例)p_sql_key_jsonに指定したJSONオブジェクトに、p_key,p_data,p_value_typeに指定した値を保存します。

-- SQLグループのSQL例)帳票テンプレートJSONに定義されたSQLのIDとSUB_IDを指定
-- select
--   DISPLAY_VALUE_01,
--   DISPLAY_VALUE_02
-- from SAMPLE_TABLE
-- where ID = #ID#
--   and SERIAL_NO = #SUB_ID#

DECLARE
  l_json   JSON_OBJECT_T;
BEGIN
  l_json := JSON_OBJECT_T();
  DBXFORM.ADD_SQL_KEY(
    p_sql_key_json   => l_json,
    p_key            => 'ID',
    p_data           => 1,
    p_value_type     => 'number'
  );
  DBXFORM.ADD_SQL_KEY(
    p_sql_key_json   => l_json,
    p_key            => 'SUB_ID',
    p_data           => 'A20',
    p_value_type     => 'string'
  );
END;

l_jsonの保存内容

{ "ID":{"data":["1"],"value_type":"number"},
  "SUB_ID":{"data":["A20"],"value_type":"string"}}

ADD_TEMPLATE_FILE プロシージャ(ファイル追加シグネチャ)

帳票テンプレートJSONファイルに指定したファイルを追加します。 ファイル変換またはPDF結合で利用されます。 対象がPDF結合用帳票テンプレートJSONで結合ファイルが複数ある場合、結合したい順番で順次実行します。

DBXFORM.ADD_TEMPLATE_FILE (
    p_template_json                IN OUT NOCOPY JSON_OBJECT_T,
    p_file                         IN     BLOB
)
引数 説明
p_template_json 帳票テンプレートJSONファイルを指定します。ファイルが追加されたJSONが戻ります。
p_file 結合対象PDFファイルのBLOBを指定します。

ADD_TEMPLATE_FILE プロシージャ(帳票テンプレートJSONファイル追加シグネチャ)

PDF結合用帳票テンプレートJSONファイルに、帳票テンプレートJSONファイルを直接追加する場合に利用します。

DBXFORM.ADD_TEMPLATE_FILE (
    p_template_json                IN OUT NOCOPY JSON_OBJECT_T,
    p_add_template_json            IN     JSON_OBJECT_T,
    p_sql_key_json                 IN     JSON_OBJECT_T
)
引数 説明
p_template_json 帳票テンプレートJSONファイルを指定します。p_add_template_jsonに指定した帳票テンプレートJSONが追加されたJSONが戻ります。
p_add_template_json 追加対象の帳票テンプレートJSONファイルを指定します。
p_sql_key_json ADD_SQL_KEYプロシージャにて生成したJSONオブジェクトを指定します。

GET_REQUEST_JSON ファンクション

PL/SQL以外から帳票WebAPIのコールを行う場合などに利用します。このファンクションから生成されるデータをBodyとし、帳票WebAPIのコールを行います。p_template_jsonに指定した帳票テンプレートJSONファイルと、p_sql_dataに指定したSQL結果データを結合しリクエストデータを生成します。PDF結合用帳票テンプレートJSONの場合、p_sql_dataにはNULLを指定します。

FUNCTION "GET_REQUEST_JSON" (
  p_template_json                 IN     JSON_OBJECT_T,
  p_sql_data                      IN     JSON_OBJECT_T
) RETURN JSON_OBJECT_T
引数 説明
p_template_json DBXFORM帳票開発アプリにて作成した帳票テンプレートJSONファイルを指定します。
p_sql_data GET_SQL_DATAファンクションにて生成したSQL結果データを指定します。

GET_SQL_DATA ファンクション

帳票テンプレートJSONファイルに指定したSQLグループのデータを取得できます。

FUNCTION "GET_SQL_DATA"(
    p_template_json                IN     JSON_OBJECT_T,
    p_sql_key_json                 IN     JSON_OBJECT_T
) RETURN JSON_OBJECT_T
引数 説明
p_template_json 帳票テンプレートJSONファイルを指定します。テンプレートの中にあるSQLを利用します
p_sql_key_json ADD_SQL_KEYプロシージャにて生成したJSONオブジェクトを指定します。

CHECK_TEMPLATE_JSON プロシージャ

帳票テンプレートJSONのデータ構造が正しいかをチェックします。 データ構造が正しくない場合、エラー・メッセージにてエラー箇所とエラー理由を示します。

PROCEDURE "CHECK_TEMPLATE_JSON"(
    p_template_json                IN     JSON_OBJECT_T
)
引数 説明
p_template_json 帳票テンプレートJSONファイルを指定します。指定したテンプレートのデータ構造をチェックします。

IS_VALID_OUTPUT_FORMAT ファンクション

入力帳票形式と出力帳票形式の組み合わせをチェックします。 許可された組み合わせの場合は1を、許可されていない組み合わせの場合は0を戻します。

FUNCTION "IS_VALID_OUTPUT_FORMAT"(
    p_input_format                   IN     VARCHAR2,
    p_output_format                  IN     VARCHAR2
) return NUMBER
引数 説明
p_input_format 入力帳票形式を指定します。
p_output_format 出力帳票形式を指定します。

DBXAP_UTIL パッケージ

DOWNLOAD_FILE プロシージャ

引数に指定したBLOBファイルをダウンロードします。Oracle APEXから利用します。

DBXAP_UTIL.DOWNLOAD_FILE (
    p_file_name                 IN     VARCHAR2,
    p_file_data                 IN OUT NOCOPY BLOB
)
引数 説明
p_file_name ダウンロードするファイル名を指定します。
p_file_data ダウンロードするファイルです。

DBXAP_DATALOAD パッケージ

SQL2JSON ファンクション

p_sql_stmtに指定したSQL問合せから結果データを取得し、JSON形式のデータをBLOBで戻します。 p_sql_variable_jsonには、p_sql_stmt内の#で囲まれた文字列(SQLバインド変数)を置換するためのデータを指定します。このデータはDBXAP_DATALOAD.ADD_BIND_VARIABLE_DATAで生成します。

FUNCTION "SQL2JSON" (
  p_sql_stmt                  IN     VARCHAR2,
  p_header_mapping_list       IN     T_DATALOAD_HEADER     default NULL,
  p_sql_variable_json         IN     JSON_OBJECT_T         default NULL,
  p_group_columns             IN     APEX_T_VARCHAR2       default NULL,
  p_force_group_format        IN     NUMBER                default 0
) RETURN BLOB
引数 説明
p_sql_stmt SQLの問合せを指定します。
p_header_mapping_list 列名とヘッダー名の組み合わせを指定することで、出力結果の列名をヘッダー名に入れ替えます。
p_sql_variable_json p_sql_stmt内の#で囲まれた文字列(SQLバインド変数)を置換するためのデータを指定します。
p_group_columns グループ化するカラム群を指定します。
p_force_group_format SQL結果データを強制的にのグループ化するかを指定します。0(False)の場合はグループ化せず、1(True)の場合はグループ化します。

DBXAP_DATALOAD.T_DATALOAD_HEADERはHEADER_NAMEとCOLUMN_NAMEを組み合わせた型です。

type "REC_DATALOAD_HEADER" is record (
    "HEADER_NAME"               VARCHAR2(255)
  , "COLUMN_NAME"               VARCHAR2(128)
);

type "T_DATALOAD_HEADER" is table of "REC_DATALOAD_HEADER";

ADD_BIND_VARIABLE_DATA プロシージャ

SQLバインド変数のデータを追加します。 DBXAP_DATALOAD.SQL2JSON等で指定するSQL問合せ(p_sql_stmt)に記載された、#で囲まれた文字列を、指定したデータに置換します。

PROCEDURE "ADD_BIND_VARIABLE_DATA"(
  p_sql_variable_json   IN OUT NOCOPY JSON_OBJECT_T,
  p_variable_name       IN     VARCHAR2,
  p_data                IN     VARCHAR2,
  p_value_type          IN     VARCHAR2   -- string/number/timestamp
);
引数 説明
p_sql_variable_json SQLバインド変数のデータを追加するJSONオブジェクトを指定します。データが空の場合は新規作成します。
p_variable_name #で囲まれた文字列を指定します。文字列の指定に#は含みません。
p_data 置換するデータを指定します。
p_value_type 置換するデータの型を指定します。string,number,timestampから指定可能です。

DBXDOC パッケージ

GET_INIT_DOCJSON ファンクション

ドキュメントJSONを作成します。 ドキュメントJSONは以下要素で構成されます。

  • section_seq(list): セクションの順序を配列で格納します。
  • sections(object): セクションJSONを格納します。
FUNCTION "GET_INIT_DOCJSON"
RETURN JSON_OBJECT_T;
引数 説明
- -

GET_INIT_SECTION ファンクション

セクションJSONを作成します。 セクションJSONは以下要素で構成されます。

  • section_data(list): ブロックJSONを配列で格納します。
FUNCTION "GET_INIT_SECTION"
RETURN JSON_OBJECT_T;
引数 説明
- -

GET_INIT_BLOCK ファンクション

ブロックJSONを作成します。 ブロックJSONは以下要素で構成されます。

  • block_type(str): ブロックJSONのタイプを指定します。
  • options(object): ブロックJSONのオプションを指定します。(ブロックJSONのタイプにより格納可能なオプションが変わります。)
  • data(list): データを配列で格納します。(ブロックJSONのタイプにより格納可能なデータが変わります。)

p_block_typetext,title,code,footnote,list,tableを指定した場合、デフォルトのオプションが付与されます。 p_options_jsonに値を指定すると、デフォルトのオプションはp_options_jsonの値に上書きされます。

FUNCTION "GET_INIT_BLOCK"(
  p_block_type             IN VARCHAR2 default 'text',
  p_options_json           IN JSON_OBJECT_T default NULL
) RETURN JSON_OBJECT_T;
引数 説明
p_block_type ブロックJSONのタイプを指定します。text,title,code,blockquote,footnote,list,table,rowから指定可能です。
p_options_json ブロックJSONのオプションを指定します。

GET_TEXT_BLOCK_OPTION ファンクション

ブロックJSON(ブロック・タイプ=text)のオプションを生成します。 オプションは以下要素で構成されます。

  • text_align(str): テキストの水平位置を指定します。
  • indent_level(int): テキストのインデントレベルを指定します。
FUNCTION "GET_TEXT_BLOCK_OPTION"(
  p_text_align               IN VARCHAR2 default 'left',
  p_indent_level             IN NUMBER default 0
) RETURN JSON_OBJECT_T
引数 説明
p_text_align テキストの水平位置を指定します。left,right,centerから指定可能です。
p_indent_level テキストのインデントレベルを指定します。0~6から指定可能です。

GET_TITLE_BLOCK_OPTION ファンクション

ブロックJSON(ブロック・タイプ=title)のオプションを生成します。 オプションは以下要素で構成されます。

  • heading_level(int): タイトルレベルを指定します。
FUNCTION "GET_TITLE_BLOCK_OPTION"(
  p_heading_level            IN NUMBER default 1
) RETURN JSON_OBJECT_T
引数 説明
p_heading_level タイトルレベルを指定します。1~6から指定可能です。

GET_CODE_BLOCK_OPTION ファンクション

ブロックJSON(ブロック・タイプ=code)のオプションを生成します。 オプションは以下要素で構成されます。

  • lang(str): コードブロックの言語を指定します。
FUNCTION "GET_CODE_BLOCK_OPTION"(
  p_lang                     IN VARCHAR2 default 'none'
) RETURN JSON_OBJECT_T
引数 説明
p_lang コードブロックの言語を指定します。

GET_FOOTNOTE_BLOCK_OPTION ファンクション

ブロックJSON(ブロック・タイプ=footnote)のオプションを生成します。 オプションは以下要素で構成されます。

  • footnote_id(str): 脚注のIDを指定します。

is_footnote_id1(True)のテキストJSONの本文を脚注のIDとして指定できます。

FUNCTION "GET_FOOTNOTE_BLOCK_OPTION"(
  p_footnote_id              IN VARCHAR2
) RETURN JSON_OBJECT_T
引数 説明
p_footnote_id 脚注のIDを指定します。

GET_LIST_BLOCK_OPTION ファンクション

ブロックJSON(ブロック・タイプ=list)のオプションを生成します。 オプションは以下要素で構成されます。

  • is_ordered_list(int): 番号付きリストであるかを指定します。
FUNCTION "GET_LIST_BLOCK_OPTION"(
  p_is_ordered_list          IN NUMBER default C_FALSE
) RETURN JSON_OBJECT_T
引数 説明
p_is_ordered_list 番号付きリストであるかを指定します。0(False)の場合は箇条書きリスト、1(True)の場合は番号付きリストになります。

GET_TABLE_BLOCK_OPTION ファンクション

ブロックJSON(ブロック・タイプ=table)のオプションを生成します。 オプションは以下要素で構成されます。

  • is_header_exists(int): ヘッダー付きテーブルであるかを指定します。
FUNCTION "GET_TABLE_BLOCK_OPTION"(
  p_is_header_exists         IN NUMBER default C_TRUE
) RETURN JSON_OBJECT_T
引数 説明
p_is_header_exists ヘッダー付きテーブルであるかを指定します。0(False)の場合はヘッダーなし、1(True)の場合はヘッダー付きになります。

GET_TEXT_JSON ファンクション

テキストJSONを作成します。 テキストJSONは以下要素で構成されます。

  • text(str): テキストを格納します。
  • is_bold(int): テキストが太字であるかを指定します。
  • is_italic(int): テキストが斜体であるかを指定します。
  • is_strike(int): テキストに打消し線を付けるか指定します。
  • is_code_span(int): テキストがコードスパンであるかを指定します。
  • is_footnote_id(int): テキストが脚注のIDであるかを指定します。
  • link_url(str): リンクとなるURLを指定します。
  • tooltip(str): ツールチップを指定します。
  • image(str): 画像のURLを指定します。
FUNCTION "GET_TABLE_BLOCK_OPTION"(
  p_is_header_exists         IN NUMBER default C_TRUE
) RETURN JSON_OBJECT_T
引数 説明
p_text テキストを指定します。
p_is_bold テキストが太字であるかを指定します。0(False)の場合は装飾なし、1(True)の場合は太字になります。
p_is_italic テキストが斜体であるかを指定します。0(False)の場合は装飾なし、1(True)の場合は斜体になります。
p_is_strike テキストに打消し線を付けるか指定します。0(False)の場合は装飾なし、1(True)の場合は打消し線が付きます。
p_is_code_span テキストがコードスパンであるかを指定します。0(False)の場合は装飾なし、1(True)の場合はコードスパンになります。
p_is_footnote_id テキストが脚注のIDであるかを指定します。0(False)の場合は装飾なし、1(True)の場合は脚注のIDになります。
p_link_url リンクとなるURLを指定します。
p_tooltip ツールチップを指定します。
p_image_url 画像のURLを指定します。

GET_IMAGE_URL ファンクション

テキストJSONのimageで利用するBLOBの画像URLを生成します。 URLの構成はdata:<image_mimetype>;base64,<base64_data>となります。

FUNCTION "GET_IMAGE_URL"(
  p_image_blob               IN BLOB,
  p_image_extension          IN VARCHAR2
) RETURN CLOB
引数 説明
p_image_blob URL生成対象のBLOBを指定します。
p_image_extension 画像のMIMETYPEを指定します。png,jpeg,gif,svg,webpから指定可能です。

ADD_SECTION プロシージャ

ドキュメントJSONにセクションJSONを格納します。 p_section_nameに格納するセクションJSONの名前、p_positionにセクションJSONを格納する順番を指定します。

PROCEDURE "ADD_SECTION"(
  p_docjson                IN OUT NOCOPY JSON_OBJECT_T,
  p_section_json           IN JSON_OBJECT_T,
  p_section_name           IN VARCHAR2,
  p_position               IN NUMBER DEFAULT NULL
)
引数 説明
p_docjson ドキュメントJSONを指定します。
p_section_json p_docjsonに指定したドキュメントJSONに格納するセクションJSONを指定します。
p_section_name 格納対象のセクションJSONの名前を指定します。半角英数字とアンダースコアのみ指定可能です。
p_position セクションJSONを格納する順番を指定します。何も指定しない場合、最後尾に配置されます。

例)ドキュメントJSONにセクションJSONを複数格納します。

DECLARE
  l_docjson      JSON_OBJECT_T;
  l_section_json JSON_OBJECT_T;
BEGIN
  l_docjson := DBXDOC.GET_INIT_DOCJSON;
  l_section_json := DBXDOC.GET_INIT_SECTION;

  DBXDOC.ADD_SECTION(
    p_docjson => l_docjson,
    p_section_json => l_section_json,
    p_section_name => 'section_2'
  );

  DBXDOC.ADD_SECTION(
    p_docjson => l_docjson,
    p_section_json => l_section_json,
    p_section_name => 'section_3'
  );

  -- p_positionを先頭に指定
  DBXDOC.ADD_SECTION(
    p_docjson => l_docjson,
    p_section_json => l_section_json,
    p_section_name => 'section_1',
    p_position => 0
  );
END;

CONCAT2SECTION プロシージャ

セクションJSONにセクションJSONまたはブロックJSONを格納します。

PROCEDURE "CONCAT2SECTION"(
  p_section_json             IN OUT NOCOPY JSON_OBJECT_T,
  p_add_json                 IN     JSON_OBJECT_T
)
引数 説明
p_section_json セクションJSONを指定します。
p_add_json p_section_jsonに指定したセクションJSONに結合するセクションJSONまたはブロックJSONを指定します。

例)セクションJSONにブロックJSONとセクションJSONを結合します。

DECLARE
  l_section_json        JSON_OBJECT_T;
  l_add_section_json    JSON_OBJECT_T;
  l_text_json           JSON_OBJECT_T;
  l_title_block_json    JSON_OBJECT_T;
  l_text_block_json     JSON_OBJECT_T;
BEGIN
  l_section_json := DBXDOC.GET_INIT_SECTION;

  -- セクションJSONにブロックJSON(ブロック・タイプ=title)を追加
  l_text_json := DBXDOC.GET_TEXT_JSON(p_text => 'Title');
  l_title_block_json := DBXDOC.GET_TITLE_BLOCK(
    p_text => l_text_json,
    p_heading_level => 1
  );
  DBXDOC.CONCAT2SECTION(
    p_section_json => l_section_json,
    p_add_json => l_title_block_json
  );

  -- 結合用のセクションJSONを定義
  l_add_section_json := DBXDOC.GET_INIT_SECTION;

  -- 結合用のセクションJSONにブロックJSON(ブロック・タイプ=text)を追加
  l_text_json := DBXDOC.GET_TEXT_JSON(p_text => 'This is text.');
  l_text_block_json := DBXDOC.GET_TEXT_BLOCK(
    p_text => l_text_json,
    p_text_align => 'left',
    p_indent_level => 0
  );
  DBXDOC.CONCAT2SECTION(
    p_section_json => l_add_section_json,
    p_add_json => l_text_block_json
  );

  -- セクションJSONを結合(一つのセクション・オブジェクトになります)
  DBXDOC.CONCAT2SECTION(
    p_section_json => l_section_json,
    p_add_json => l_add_section_json
  );
END;

ADD_CHILD_BLOCK プロシージャ

ブロックJSONにブロックJSONを格納します。

PROCEDURE "ADD_CHILD_BLOCK"(
  p_block_json              IN OUT NOCOPY JSON_OBJECT_T,
  p_child_block_json        IN JSON_OBJECT_T
)
引数 説明
p_block_json ブロックJSONを指定します。
p_child_block_json p_block_jsonに指定したブロックJSONに格納するブロックJSONを指定します。

例)ブロックJSON(ブロック・タイプ=list)にブロックJSON(ブロック・タイプ=list)を格納します。

DECLARE
  l_list_block_json       JSON_OBJECT_T;
  l_child_list_block_json JSON_OBJECT_T;
BEGIN
  l_list_block_json := DBXDOC.GET_INIT_BLOCK(p_block_type => 'list');
  DBXDOC.ADD_TEXT(
    p_block_json => l_list_block_json,
    p_text => '親のリスト'
  );

  l_child_list_block_json := DBXDOC.GET_INIT_BLOCK(p_block_type => 'list');
  DBXDOC.ADD_TEXT(
    p_block_json => l_child_list_block_json,
    p_text => '子のリスト'
  );

  DBXDOC.ADD_CHILD_BLOCK(
    p_block_json => l_list_block_json,
    p_child_block_json => l_child_list_block_json
  );
END;

ADD_TEXT プロシージャ(テキストJSONのシグネチャ)

ブロックJSONにテキストJSONを格納します。 格納先のブロック・タイプがlist,row,blockquoteの場合、テキストJSONをブロックJSON(ブロック・タイプ=text)に変換してから格納します。

PROCEDURE "ADD_TEXT"(
  p_block_json               IN OUT NOCOPY JSON_OBJECT_T,
  p_text                     IN JSON_OBJECT_T
)
引数 説明
p_block_json ブロックJSONを指定します。
p_text p_block_jsonに指定したブロックJSONに格納するテキストJSONを指定します。

ADD_TEXT プロシージャ(文字列のシグネチャ)

ブロックJSONにテキストJSONを格納します。 p_textに指定したテキストは、ブロックJSONへの格納前にテキストJSONに変換されます。 格納先のブロック・タイプがlist,row,blockquoteの場合、テキストJSONをブロックJSON(ブロック・タイプ=text)に変換してから格納します。

PROCEDURE "ADD_TEXT"(
  p_block_json               IN OUT NOCOPY JSON_OBJECT_T,
  p_text                     IN VARCHAR2
)
引数 説明
p_block_json ブロックJSONを指定します。
p_text p_block_jsonに指定したブロックJSONに格納するテキストを指定します。

APPEND_ROW プロシージャ

ブロックJSON(ブロック・タイプ=table)にブロックJSON(ブロック・タイプ=row)を格納します。

PROCEDURE "APPEND_ROW"(
  p_table_block_json         IN OUT NOCOPY JSON_OBJECT_T,
  p_row_block_json           IN JSON_OBJECT_T
)
引数 説明
p_table_block_json ブロックJSON(ブロック・タイプ=table)を指定します。
p_row_block_json p_block_jsonに指定したブロックJSONに格納するブロックJSON(ブロック・タイプ=row)を指定します。

例)ブロックJSON(ブロック・タイプ=table)を作成し、行データを1行追加します。

DECLARE
  l_table_block_json  JSON_OBJECT_T;
  l_row_block_json    JSON_OBJECT_T;

BEGIN
  -- テーブルブロックの作成
  l_table_block_json := GET_INIT_BLOCK('table');

  -- 1行目行データの作成
  l_row_block_json := DBXDOC.GET_INIT_BLOCK('row');
  DBXDOC.ADD_TEXT(
    p_block_json => l_row_block_json,
    p_text => 'row1-col1'
  );
  DBXDOC.ADD_TEXT(
    p_block_json => l_row_block_json,
    p_text => 'row1-col2'
  );

  -- 行データの追加
  DBXDOC.APPEND_ROW(
    p_table_block_json => l_table_block_json,
    p_row_block_json => l_row_block_json
  );

  -- 2行目行データの作成
  l_row_block_json := DBXDOC.GET_INIT_BLOCK('row');
  DBXDOC.ADD_TEXT(
    p_block_json => l_row_block_json,
    p_text => 'row2-col1'
  );
  DBXDOC.ADD_TEXT(
    p_block_json => l_row_block_json,
    p_text => 'row2-col2'
  );

  -- 行データの追加
  DBXDOC.APPEND_ROW(
    p_table_block_json => l_table_block_json,
    p_row_block_json => l_row_block_json
  );
END;

GET_TITLE_BLOCK ファンクション(テキストJSONのシグネチャ)

文字付のブロックJSON(ブロック・タイプ=title)を直接作成します。 p_textにテキストJSONを指定します。

FUNCTION "GET_TITLE_BLOCK"(
  p_text                     IN JSON_OBJECT_T,
  p_heading_level            IN NUMBER
) return JSON_OBJECT_T
引数 説明
p_text 見出しのテキストJSONを指定します。
p_heading_level タイトルレベルを指定します。1~6から指定可能です。

GET_TITLE_BLOCK ファンクション(文字列のシグネチャ)

文字付のブロックJSON(ブロック・タイプ=title)を直接作成します。 p_textに文字列を指定します。

FUNCTION "GET_TITLE_BLOCK"(
  p_text                     IN VARCHAR2,
  p_heading_level            IN NUMBER
) return JSON_OBJECT_T
引数 説明
p_text 見出しのテキストを指定します。
p_heading_level タイトルレベルを指定します。1~6から指定可能です。

GET_TEXT_BLOCK ファンクション(テキストJSONのシグネチャ)

文字付のブロックJSON(ブロック・タイプ=text)を直接作成します。 p_textにテキストJSONを指定します。

FUNCTION "GET_TEXT_BLOCK"(
  p_text                     IN JSON_OBJECT_T,
  p_text_align               IN VARCHAR2 default 'left',
  p_indent_level             IN NUMBER default 0
) return JSON_OBJECT_T
引数 説明
p_text 見出しのテキストJSONを指定します。
p_text_align テキストの水平位置を指定します。left,right,centerから指定可能です。
p_indent_level テキストのインデントレベルを指定します。0~6から指定可能です。

GET_TEXT_BLOCK ファンクション(文字列のシグネチャ)

文字付のブロックJSON(ブロック・タイプ=text)を直接作成します。 p_textで指定したテキストJSONとp_text_align,p_indent_levelで指定したオプション値を格納します。 p_textに指定したテキストは、ブロックJSONへの格納前にテキストJSONに変換されます。

FUNCTION "GET_TEXT_BLOCK"(
  p_text                     IN VARCHAR2,
  p_text_align               IN VARCHAR2 default 'left',
  p_indent_level             IN NUMBER default 0
) return JSON_OBJECT_T
引数 説明
p_text 見出しのテキストを指定します。
p_text_align テキストの水平位置を指定します。left,right,centerから指定可能です。
p_indent_level テキストのインデントレベルを指定します。0~6から指定可能です。

GET_TABLE_BLOCK ファンクション(SQLデータのシグネチャ)

SQLの結果データからブロックJSON(ブロック・タイプ=table)を作成します。 p_sqldata_jsonにDBXAP_DATALOAD.SQL2JSONで取得したSQL結果JSONを指定します。

FUNCTION "GET_TABLE_BLOCK"(
  p_sqldata_json             IN JSON_OBJECT_T,
  p_column_list              IN JSON_ARRAY_T default NULL,
  p_header_json              IN JSON_OBJECT_T default NULL
) return JSON_OBJECT_T
引数 説明
p_sqldata_json SQL結果JSONを指定します。
p_column_list 列名のリストを指定します。指定した場合、指定したカラムのみをデータの対象としてテーブルブロックを生成します。
p_header_json テーブルの列名を指定したヘッダー名で入れ替えます。指定しない列は列名がそのままヘッダーとして利用されます。

GET_TABLE_BLOCK ファンクション(SQL文のシグネチャ)

SQLの結果データからブロックJSON(ブロック・タイプ=table)を作成します。 p_sqldata_stmtに結果データを取得するSQL文を指定します。

FUNCTION "GET_TABLE_BLOCK"(
  p_sql_stmt                 IN VARCHAR2,
  p_sql_variable_json        IN JSON_OBJECT_T default NULL,
  p_column_list              IN JSON_ARRAY_T default NULL,
  p_header_json              IN JSON_OBJECT_T default NULL
) return JSON_OBJECT_T
引数 説明
p_sql_stmt SQL文を指定します。
p_sql_variable_json SQLバインド変数データを指定します。指定するデータはDBXAP_DATALOAD.ADD_BIND_VARIABLE_DATAで生成します。
p_column_list 列名のリストを指定します。指定した場合、指定したカラムのみをデータの対象としてテーブルブロックを生成します。
p_header_json テーブルの列名を指定したヘッダー名で入れ替えます。指定しない列は列名がそのままヘッダーとして利用されます。

例)ブロックJSON(ブロック・タイプ=table)を作成します。

DECLARE
  l_sql_stmt          VARCHAR2(32767);
  l_sql_variable_json JSON_OBJECT_T;
  l_sqldata_json      JSON_OBJECT_T;
  l_header_json       JSON_OBJECT_T;
  l_column_list       JSON_ARRAY_T;
  l_table_block_json  JSON_OBJECT_T;

BEGIN
  l_sql_stmt := q'[
      select
          'COL1' as COL1,
          #COL2# as COL2
      from dual
  ]';

  -- SQLバインド変数の指定
  l_sql_variable_json := new JSON_OBJECT_T();
  DBXAP_DATALOAD.ADD_BIND_VARIABLE_DATA(
      p_sql_variable_json => l_sql_variable_json,
      p_variable_name => 'COL2',
      p_data => 'COL2',
      p_value_type => 'string'
  );

  -- SQL結果JSONの取得
  l_sqldata_json :=
      JSON_OBJECT_T.parse(
        DBXAP_DATALOAD.SQL2JSON(
          p_sql_stmt => l_sql_stmt,
          p_sql_variable_json => l_sql_variable_json
        )
      );

  -- カラムリストの作成
  l_column_list := new JSON_ARRAY_T;
  l_column_list.append('col1');
  l_column_list.append('col2');
  l_column_list.append('col3');

  -- ヘッダーリストの作成
  l_header_json := new JSON_OBJECT_T();
  l_header_json.put('col1', 'カラム1');
  l_header_json.put('col2', 'カラム2');

  l_table_block_json := DBXDOC.GET_TABLE_BLOCK(
      p_sql_stmt => l_sql_stmt,
      p_sql_variable_json => l_sql_variable_json,
      p_column_list => l_column_list,
      p_header_json => l_header_json
  );
END;

ADD_CHILD_LIST プロシージャ

ブロックJSON(ブロック・タイプ=list)にブロックJSON(ブロック・タイプ=list)を格納します。

PROCEDURE "ADD_CHILD_LIST"(
  p_list_block_json          IN OUT NOCOPY JSON_OBJECT_T,
  p_child_list_block_json    IN JSON_OBJECT_T
)
引数 説明
p_list_block_json ブロックJSON(ブロック・タイプ=list)を指定します。
p_child_list_block_json p_list_block_jsonに指定したブロックJSONに格納するブロックJSON(ブロック・タイプ=list)を指定します。

ADD_LIST_ITEM プロシージャ

ブロックJSON(ブロック・タイプ=list)にブロックJSON(ブロック・タイプ=list,text)を格納します。

PROCEDURE "ADD_CHILD_LIST"(
  p_list_block_json          IN OUT NOCOPY JSON_OBJECT_T,
  p_child_list_block_json    IN JSON_OBJECT_T
)
引数 説明
p_list_block_json ブロックJSON(ブロック・タイプ=list)を指定します。
p_child_list_block_json p_list_block_jsonに指定したブロックJSONに格納するブロックJSON(ブロック・タイプ=list,text)を指定します。textの場合リストの項目となり、listの場合子のリストとなります。

CHECK_DOCJSON プロシージャ

ドキュメントJSONのフォーマットが正しいかをチェックします。 ドキュメントJSONに追加が可能なセクションJSONをチェックしたい場合、p_add_jsonに指定し、フォーマットが正しいかをチェックします。

PROCEDURE "CHECK_DOCJSON"(
  p_docjson                 IN     JSON_OBJECT_T,
  p_add_json                IN     JSON_OBJECT_T default NULL,
  p_is_confirm_children     IN     NUMBER default 1
)
引数 説明
p_docjson チェック対象のドキュメントJSONを指定します。
p_add_json ドキュメントJSONに追加する想定のセクションJSONを指定します。実際に追加はされません。
p_is_confirm_children 追加対象のセクションJSONの子要素(ブロックJSON)および、ドキュメントJSON内に追加済みの子要素(セクションJSON)をチェックするか指定します。0(False)の場合はチェックなし、1(True)の場合はチェックします。

CHECK_BLOCK_JSON プロシージャ

ブロックJSONのフォーマットが正しいかをチェックします。 ブロックJSONに追加が可能なJSONをチェックしたい場合、p_add_jsonに指定し、フォーマットが正しいかをチェックします。

PROCEDURE "CHECK_BLOCK_JSON"(
  p_block_json              IN     JSON_OBJECT_T,
  p_add_json                IN     JSON_OBJECT_T default NULL,
  p_is_confirm_children     IN     NUMBER default 0
)
引数 説明
p_block_json チェック対象のブロックJSONを指定します。
p_add_json p_block_jsonに指定したブロックJSONに追加する想定のブロックJSONまたはテキストJSONを指定します。実際に追加はされません。
p_is_confirm_children 追加対象のブロックJSONの子要素(ブロックJSON)および、追加元のドキュメントJSON内に追加済みの子要素(ブロックJSON)をチェックするか指定します。0(False)の場合はチェックなし、1(True)の場合はチェックします。