我正在尝试使用 Oracle APEX 4.1.1 构建一个简单的查看应用程序。要显示的信息位于不同数据库的表中,然后是包含 APEX 应用程序访问的架构的数据库。使用视图 ( RemoteTableView ) 和数据库链接访问此远程表。视图按预期工作,包括 Oracle 无法通过数据库链接选择 LOB 列项目。
在 APEX 应用程序中,我根据Oracle Application Express Advanced Tutorials 中的说明定义了一个程序 ( DownloadFiles ),每当需要从视图下载 BLOB 时都会运行该程序
当 APEX 应用程序构建在包含 BLOB 项目的现有表上时,这非常有效,没有问题。
但是,在RemoteTableView 上,过程略有不同。额外的代码行被添加到DownloadFiles过程中,每当调用视图中的项目进行下载时,将RemoteTableView 中的实际 BLOB 插入到临时表 ( TempTable ) 中。然后在TempTable上调用DownloadFile以下载(现在本地存储的)BLOB。(这样做是为了避免通过 DB-Link 直接选择 LOB 项)。没有提交。
不幸的是,APEX 应用程序在调用项目下载时失败,并显示“找不到此网页。未找到该网址的网页:.../f?p=101:7:1342995827199601::NO::P7_DOC_ID :3001"。
对这个问题的研究已被证明是徒劳的。插入过程按预期工作(在 PL/SQL Developer 中),并且可以轻松下载任何其他本地表中的任何其他 BLOB。
因此问题是,为什么 APEX 应用程序不能处理这种情况。使用临时表或插入语句时是否有我应该注意的限制?此外,下载 LOB 对象的最佳实践是什么。
详细说明插入行和下载 BLOB 的过程。(我尝试过不同的方法)。这个 PL/SQL 块被称为'on load before header',:P2_BLOB_ID …