使用apex_region.export_data导出Interactive Grid时CURRENCY列未导出的问题
问题描述
我通过以下SQL查询创建了一个Interactive Grid:
select REGISTERATION_ID, STUDENT_ID, DRIVER_ID, DELIVERY_TYPE, PAYMENT_TYPE, AMOUNT, CURRENCY, DISCOUNT_TYPE, DISCOUNT_AMOUNT, NET_AMOUNT, START_DATE, END_DATE, PAID_AMOUNT, UNPAID_AMOUNT from myTable
随后使用apex_region.export_data API函数导出该Grid的数据:
l_export := apex_region.export_data ( p_format => apex_data_export.c_format_json, p_as_clob => true, p_page_id => 620, p_region_id => no_of_region_id, p_data_only => true); v_clob_json_items := l_export.content_clob;
返回的JSON结果中缺失了CURRENCY等部分列(CURRENCY是包含货币值和名称的选择列表项),示例返回结果:
{ "items": [ { "student_id": "student_name_of_select_list_item_with_value_id", "start_date": "2023-05-30T00:00:00", "end_date": "2023-07-12T00:00:00", "driver_id": "driver_name_of_select_list_item", "delivery_type": "\u0630\u0647\u0627\u0628 \u0648\u0625\u064A\u0627\u0628", "net_amount": 12000, "payment_type": "\u0623\u0633\u0628\u0648\u0639\u064A", "paid_amount": 0, "unpaid_amount": 12000 }, { "student_id": "student_name_of_select_list_item_with_value_id", "start_date": "2023-01-31T00:00:00", "end_date": "2023-05-29T00:00:00", "driver_id": "driver_name_of_select_list_item", "delivery_type": "\u0630\u0647\u0627\u0628 \u0648\u0625\u064A\u0627\u0628", "net_amount": 40000, "payment_type": "\u0634\u0647\u0631\u064A", "paid_amount": 40000, "unpaid_amount": 0 } ] }
解决建议
- 检查列的可见性设置:确认
CURRENCY等缺失列在Interactive Grid的属性中处于可见状态。apex_region.export_data默认仅导出Grid中当前显示的列,若列被设置为服务器端/客户端隐藏,导出时会被忽略。 - 验证列的导出配置:在Interactive Grid的列属性面板中,找到「导出」相关选项,确保
CURRENCY列的「包含在导出中」开关已勾选,部分列可能被单独配置为不参与导出。 - 强制指定导出列:如果需要确保特定列被导出,可在
apex_region.export_data中添加p_columns参数,明确列出所有需要导出的列,示例:l_export := apex_region.export_data ( p_format => apex_data_export.c_format_json, p_as_clob => true, p_page_id => 620, p_region_id => no_of_region_id, p_data_only => true, p_columns => apex_t_varchar2('REGISTERATION_ID','STUDENT_ID','CURRENCY','AMOUNT', ...)); -- 按需列出目标列 - 排查选择列表列配置:对于
CURRENCY这类选择列表类型的列,确认其「返回类型」配置正确。若返回值与显示值的设置存在异常,可能导致导出时无法正确抓取数据或被判定为无效列。 - 验证API参数有效性:
p_data_only => true仅控制是否导出数据部分,不会影响列的包含性。若上述配置均无问题,可尝试移除该参数测试,同时确认p_region_id是否指向正确的Interactive Grid区域ID。
内容的提问来源于stack exchange,提问作者shady
相关产品推荐
相关产品推荐

