1

我的页面上有一个文件浏览器,允许用户选择一个 Excel 文件。然后,当单击按钮时,提交页面并调用一个进程,该进程apex_application_temp_files根据所选文件名从 中检索数据。

我使用以下查询在经典报告中显示的数据

SELECT col001,col002
FROM apex_application_temp_files f, 
     table( apex_data_parser.parse(
              p_content                     => f.blob_content,
              p_add_headers_row             => 'N',
              p_xlsx_sheet_name             => NULL,
              p_max_rows                    => 500,
              p_store_profile_to_collection => 'FILE_PARSER_COLLECTION',
              p_file_name                   => f.filename
           ))
WHERE f.name = :P2_FILE_BROWSE

数据显示得很好,但是当我尝试处理数据而不是显示它时,没有数据被检索到。我使用相同的查询:

FOR x IN (SELECT col001,col002
    FROM apex_application_temp_files f, 
    table( apex_data_parser.parse(
              p_content                     => f.blob_content,
              p_add_headers_row             => 'N',
              p_xlsx_sheet_name             => NULL,
              p_max_rows                    => 500,
              p_store_profile_to_collection => 'FILE_PARSER_COLLECTION',
              p_file_name                   => f.filename
          ))
WHERE f.name = :P2_FILE_BROWSE) 
LOOP
    apex_debug.message('First field is ', x.col001);
    apex_debug.message('Second field is ', x.col002);
END LOOP;

不确定发生了什么以及为什么没有显示数据。我究竟做错了什么?

4

1 回答 1

1

似乎正在检索记录,但调试未显示它们,因为消息中缺少 %s。此外,在发出调试语句之前需要启用调试。

apex_debug.enable;
apex_debug.message('First field is %s', x.col001);
apex_debug.message('Second field is %s', x.col002);
于 2020-08-27T01:32:22.720 回答