Oracle apex_应用程序_临时文件出现问题

Oracle apex_应用程序_临时文件出现问题,oracle,plsql,oracle-apex,Oracle,Plsql,Oracle Apex,我有一个问题,在我的OracleApex应用程序中,我希望有一个文件上传机制,将上传的.zip文件作为参数发送到某个函数(该函数运行良好,我通过从DB手动馈送进行了测试)。问题是,当我试图在一个过程中从“apex_应用程序_临时文件”中选择上载的文件时,它会抛出异常“未找到数据”,但当我将报告添加到应用程序中,在该应用程序中我选择ID和文件名时,我会看到该文件…知道为什么会发生这种情况吗? 我很抱歉,如果这是一些琐碎的问题,但我在APEX开发中是相当新的 过程: declare l_bl

我有一个问题,在我的OracleApex应用程序中,我希望有一个文件上传机制,将上传的.zip文件作为参数发送到某个函数(该函数运行良好,我通过从DB手动馈送进行了测试)。问题是,当我试图在一个过程中从“apex_应用程序_临时文件”中选择上载的文件时,它会抛出异常“未找到数据”,但当我将报告添加到应用程序中,在该应用程序中我选择ID和文件名时,我会看到该文件…知道为什么会发生这种情况吗? 我很抱歉,如果这是一些琐碎的问题,但我在APEX开发中是相当新的

过程:

declare
    l_blob blob;
begin
    SELECT blob_content
      INTO l_blob
      FROM apex_application_temp_files
      WHERE NAME = :P6_FILE;
    --INSTANTLY SET :G_TEST_ID FOR REPORTS
    :G_TEST_ID := file_management.unwrap_zip(ab_zipped_blob => l_blob);
end;

您需要在列
NAME
上选择,而不是
FILENAME
。前者是唯一标识符(看起来像是\u编号的系列\u\u文件名),是文件浏览项将包含的内容,而后者没有前缀


听着,你得从你这边提供更多的信息。我创建了一个非常简单的页面来尝试这个(apex.oracle.com)

P2_文件
是一个文件浏览项目

  • 存储类型:表APEX\u应用程序\u临时文件
  • 在:会话结束时清除文件
我创建了一个onsubmit进程,它只列出调试输出中的一些内容

declare
    l_blob blob;
begin 
  for r in (select * from apex_application_temp_files)
  loop
    apex_debug.message('name: %s - filename: %s', r.name, r.filename);
  end loop;

  apex_debug.message('P2_FILE: %s', :P2_FILE);

    SELECT blob_content
      INTO l_blob
      FROM apex_application_temp_files
      WHERE name = :P2_FILE;

  apex_debug.message('blob length: %s', dbms_lob.getlength(l_blob));
end;
因此,我运行页面,启用调试,选择一个文件并点击提交。一切顺利。检查调试日志(接受):


那么:你那边有什么不同?您是否按照Jeffrey的建议完成并运行了页面调试?您的“清除”设置为什么?您确定在选择blob时未找到数据,而您的过程中未找到数据-您已注释掉您的过程调用吗?

您需要在列
名称中选择,而不是
文件名
。前者是唯一标识符(看起来像是\u编号的系列\u\u文件名
),是文件浏览项将包含的内容,而后者没有前缀


听着,你得从你这边提供更多的信息。我创建了一个非常简单的页面来尝试这个(apex.oracle.com)

P2_文件
是一个文件浏览项目

  • 存储类型:表APEX\u应用程序\u临时文件
  • 在:会话结束时清除文件
我创建了一个onsubmit进程,它只列出调试输出中的一些内容

declare
    l_blob blob;
begin 
  for r in (select * from apex_application_temp_files)
  loop
    apex_debug.message('name: %s - filename: %s', r.name, r.filename);
  end loop;

  apex_debug.message('P2_FILE: %s', :P2_FILE);

    SELECT blob_content
      INTO l_blob
      FROM apex_application_temp_files
      WHERE name = :P2_FILE;

  apex_debug.message('blob length: %s', dbms_lob.getlength(l_blob));
end;
因此,我运行页面,启用调试,选择一个文件并点击提交。一切顺利。检查调试日志(接受):


那么:你那边有什么不同?您是否按照Jeffrey的建议完成并运行了页面调试?您的“清除”设置为什么?您确定在选择blob时未找到数据,并且未在您的过程中找到数据吗?您是否已注释掉您的过程调用?

可能记录该值,并查看它是否实际设置为文件名-例如,添加
apex_debug.message(:P6_FILE)在那里。你在哪一个apex版本上?apex版本是5.0.2.00.07也许记录该值,看看它是否实际设置为文件名-例如添加
apex_调试.message(:P6_文件)在那里。你在哪一个apex版本?apex版本是5.0.2.00.07谢谢,我已经发现了,但仍然是相同的结果没有数据_FOUND@Silverrook首先,试试basic,就像上面的代码一样。没什么了不起的,只是调试一下。提供有关设置的更多详细信息。尝试一下。如果没有更多的信息,我想我们无法提供进一步的帮助。谢谢,我已经发现了,但仍然是相同的结果没有数据_FOUND@Silverrook首先,试试basic,就像上面的代码一样。没什么了不起的,只是调试一下。提供有关设置的更多详细信息。尝试一下。如果没有更多的信息,我想我们无法提供进一步的帮助。