Oracle apex 是否可以为左侧加入的经典报告创建下载链接?
我在页面中有经典报告,其中包含以下SQL查询:Oracle apex 是否可以为左侧加入的经典报告创建下载链接?,oracle-apex,Oracle Apex,我在页面中有经典报告,其中包含以下SQL查询: SELECT CELLS.ID, CELLS.NAME, CELLS.NUM, CELLS.AC_ID, AC.SERIAL,AC.FILE_NAME, AC.FILE_DATA FROM CELLS LEFT JOIN AC ON CELLS.AC_ID = AC.ID WHERE CELLS.AC_ID IS NOT NULL ORDER BY CELLS.NUM 我想有AC.FILE\u DATA的下载链接,它是BLOB。因此,在属性FI
SELECT CELLS.ID, CELLS.NAME, CELLS.NUM, CELLS.AC_ID, AC.SERIAL,AC.FILE_NAME, AC.FILE_DATA
FROM CELLS
LEFT JOIN AC
ON CELLS.AC_ID = AC.ID
WHERE CELLS.AC_ID IS NOT NULL
ORDER BY CELLS.NUM
我想有AC.FILE\u DATA
的下载链接,它是BLOB。因此,在属性FILE\u DATA
列中,我设置了以下内容:
Type: Download BLOB
Table Name: AC
BLOB Column: FILE_DATA
Primary Key Column 1: ID
然后,页面在经典报告区域的位置生成错误:
错误:ORA-06502:PL/SQL:数字或值错误:字符到数字
转换错误
查看调试日志可显示更多信息:
“AC区域”中的异常:Sqlerrm:ORA-06502:PL/SQL:numeric或value
错误:字符到数字转换错误回溯:ORA-06512:at
“APEX_050100.WWV_渲染报告3”,第7965行
如果左连接中没有
AC.FILE\u数据
,则没有例外。那么,在报表查询中使用连接时,我真的可以拥有blob下载列吗?据我所知,它与(左)连接无关,只是与创建下载链接的方式有关。它不应该是BLOB列名,但是:
dbms_lob.getlength(ac.file_data) download
或者,应用于您的查询
SELECT CELLS.ID,
CELLS.NAME,
CELLS.NUM,
CELLS.AC_ID,
AC.SERIAL,
AC.FILE_NAME,
--
dbms_lob.getlength(AC.FILE_DATA) download --> this
FROM CELLS
LEFT JOIN AC
ON CELLS.AC_ID = AC.ID
WHERE CELLS.AC_ID IS NOT NULL
ORDER BY CELLS.NUM
“下载”列设置:
- 类型:下载BLOB
- 表名:AC
- BLOB列:文件\u数据
- 主键列1:ID
保存,运行-应该很好。这确实带来了下载链接,但尝试下载它时,会出现
500内部服务器错误
,尽管数据、mime类型和文件名都在那里。在回答您的问题时,我创建了一个示例(这样我就不会写愚蠢的东西),并毫无问题地下载了图像。Mime类型和文件名不是必需的;他们只是告诉你如何“打开”文件(JPG是用图像查看器打开的,PDF是用一些PDF查看器打开的,如Adobe Acrobat Reader等),而文件名是用来帮助你“保存”文件的(否则,文件名只是“下载”,没有扩展名)。简:不知道会发生什么。如果可能的话,在apex.oracle.com上创建一个示例,并提供凭据,以便我们能够看到它。我将尝试在apex.oracle.com上复制它,但有一点是明确的,当我消除连接并直接使用时,选择ID、SERIAL、FILE_NAME、dbms_lob.getlength(FILE_DATA)作为来自AC的FILE_数据,然后下载就可以了。也许与ID有关,当它应该找到blob时…在下载URL中有一个名为k1
的参数。当我没有连接查询时,我取了k1
的值,它指向AC
表中的右ID。然后,当使用左连接查询时,我查看了k1
值,它指向CELLS表中的ID。如果我在列设置中指定了带有ID的AC
表,它将如何找到正确的数据?可能是apex使用左连接查询的ID从AC表中查找数据,这显然是错误的。但我无法在数据列设置中指定左连接查询…基本上我的假设是正确的。我只是稍微修改了左连接:选择CELLS.ID作为CELLID,CELLS.AC_ID作为ID
。。。解决了500内部服务器错误
,我可以下载。