我正在编写一个报告工具(Pentaho Report Designer)的查询,我需要检索一些存储在Oracle 11数据库中的jpgs.诀窍是慢跑(存储为BLOB)包括我需要删除的12字节头(由另一个应用程序添加).报告工具还要求将数据作为RAW数据返回.
我遇到的问题似乎是我找到的用于操作BLOB的函数/过程都对它们有严格的大小/长度限制.
使用DBMS_LOB.SUBSTR(dbfile.filedata,2000,12),此查询与我可以获得的工作一样接近:
select DBMS_LOB.SUBSTR(dbfile.filedata,2000,12) as filedata
from bms_0002005_251 safety
inner join bms_9999999_100 file02 on safety.bms_id = file02.bms_fk_0002005_839_ID
inner join bms_9999999_104 inc on safety.bms_fk_0002005_844_id = inc.bms_id
left join bms_dbfiles dbfile on file02.bms_9999999_40 = dbfile.uniqueid
Run Code Online (Sandbox Code Playgroud)
对于<= 2000字节的图像,这完全有效,剥离12字节标头并返回原始数据,如FFD8FFE000104A46494600010201006000600000FFEE000E41646F626500640000000001 ...等
但是对于较大的图像(大多数图像)2000是不够的,但是一旦我将子字符串长度增加到2001,查询就会失败:
ORA-06502:PL/SQL:数字或值错误:原始变量长度太长ORA-06512:第1行06502. 00000 - "PL/SQL:数字或值错误%s"
这是我最接近的,但长话短说 - 在单个查询中是否有任何方法我可以从大型BLOB中删除前12个字节并将数据作为RAW返回?
我必须构建一个复杂的报告(例如标题,文本和多个列表和图表,在这里和那里排列在多个页面上).像复杂的发票.
我在Pentaho的网上找不到这样的例子.
我尝试使用子报表,但它导致30个嵌套的子报表,我认为这不好.
主要问题是我有结构化数据,我觉得在简单的行集中转换它并不舒服.实际上,我更喜欢从Web服务中检索数据.
那么,Pentaho是正确的工具吗?我怎样才能实现目标?(并且...... Stckoverflow是发布此问题的正确位置吗?)
我有一份包含 3 列的报告:“项目”、“描述”和“数量”。
ITEM 和 QTY 字段是单行值,但描述是多行,可以是 1 行,可以是 30 行,或之间的任何数字。
问题是 ITEM 和 QTY 列不会增长到与描述列相同的高度,并且 QTY 和 ITEM 字段的垂直边框不会延伸到DESCRIPTION 字段的高度,尽管动态高度属性设置为所有领域。
我该如何解决这个问题?