blob oracle10,sql – Oracle 10:使用HEXTORAW填充blob数据

我们在Oracle中有一个表,其中BLOB列需要填充少量任意字节数据 – 我们永远不会输入超过4000字节的数据.

我正在使用现有的基于C OCI的基础结构,这使得在某些上下文中使用绑定变量非常困难,因此我需要仅使用简单查询来填充此BLOB列. (我们正在努力使其现代化,但今天不是一种选择,)

我们对这样的查询运气不错:

UPDATE MyTable

SET blobData = HEXTORAW('0EC1D7FA6B411DA5814...lots of hex data...0EC1D7FA6B411DA5814')

WHERE ID = 123;

起初,这很有效.但是,最近我们遇到了一个需要输入2000多字节数据的情况.此时,我们遇到Oracle错误ORA-01704:字符串文字太长,因为传递给HEXTORAW的字符串超过4000个字符.我尝试拆分字符串,然后与||连接,但这并没有避免错误.

因此,我需要一种更新此列的方法,并使用简单的查询将其填充超过2000字节的数据.可能吗?

(我知道如果我拥有绑定变量,那将是微不足道的 – 实际上与这个表交互的其他应用程序使用了这种确切的技术 – 但不幸的是我无法在这里重构数据库内容.只需要将数据输入表格.)

编辑:

一种没有用的有希望的方法是连接RAW:

UTL_RAW.CONCAT(HEXTORAW('...'), HEXTORAW('...'), HEXTORAW('...'))

这会躲避字符串长度限制,但似乎Oracle在RAW长度上也有一个匹配的内部2000字节限制.所以我不能用RAW填充blob.也许有一个函数可以将多个RAW连接成一个BLOB.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值