oracle blob 删除,Oracle SQL – 如何从BLOB中删除前导字节(并以RAW形式返回)?

我正在编写一个报告工具(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

对于图像< = 2000字节,这完美地工作,剥离12字节头并返回原始数据,如

FFD8FFE000104A464946000102010

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

600000FFEE000E41646F626500640000000001 ……等

但是对于较大的图像(大多数图像)2000是不够的,但是一旦我将子字符串长度增加到2001,查询就会失败:

ORA-06502: PL/SQL: numeric or value error: raw variable length too

long ORA-06512: at line 1

06502. 00000 – “PL/SQL: numeric or value error%s”

这是我最接近的,但长话短说 – 在单个查询中是否有任何方法我可以从大型BLOB中删除前12个字节并将数据作为RAW返回?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值