Oracle apex_应用程序_临时文件出现问题
我有一个问题,在我的OracleApex应用程序中,我希望有一个文件上传机制,将上传的.zip文件作为参数发送到某个函数(该函数运行良好,我通过从DB手动馈送进行了测试)。问题是,当我试图在一个过程中从“apex_应用程序_临时文件”中选择上载的文件时,它会抛出异常“未找到数据”,但当我将报告添加到应用程序中,在该应用程序中我选择ID和文件名时,我会看到该文件…知道为什么会发生这种情况吗? 我很抱歉,如果这是一些琐碎的问题,但我在APEX开发中是相当新的 过程:Oracle apex_应用程序_临时文件出现问题,oracle,plsql,oracle-apex,Oracle,Plsql,Oracle Apex,我有一个问题,在我的OracleApex应用程序中,我希望有一个文件上传机制,将上传的.zip文件作为参数发送到某个函数(该函数运行良好,我通过从DB手动馈送进行了测试)。问题是,当我试图在一个过程中从“apex_应用程序_临时文件”中选择上载的文件时,它会抛出异常“未找到数据”,但当我将报告添加到应用程序中,在该应用程序中我选择ID和文件名时,我会看到该文件…知道为什么会发生这种情况吗? 我很抱歉,如果这是一些琐碎的问题,但我在APEX开发中是相当新的 过程: declare l_bl
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临时文件
- 在:会话结束时清除文件
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,就像上面的代码一样。没什么了不起的,只是调试一下。提供有关设置的更多详细信息。尝试一下。如果没有更多的信息,我想我们无法提供进一步的帮助。