【发布时间】:2011-04-12 02:37:46
【问题描述】:
我如何在 Oracle 11 中将大数据(~100000 个十六进制数字)插入到 Blob 字段中,仅使用 sql 命令(没有任何带有 load cluase 等的外部数据)。
update tablename set fieldname='AA';
作品 - 1 个字节;
update tablename set fieldname='AA...(4000 hex-digits)...AA';
没有。 Niether Concat 帮助;字符串不能大于 4000 个字符。有没有别的办法,只用sql命令?
【问题讨论】:
-
您是否坚持它必须是 SQL - 是否可以接受一个独立的 pl/sql 块?我们是在谈论 SQL*Plus 作为客户端吗? (在某些客户端语言中,Ora 10 中的字符串可以是 32k)。我想你想要一个 PL/SQL 块之类的东西,结合 HEXTORAW 来填充 BLOB 变量,然后使用 BLOB 进行更新。
-
十六进制数据从何而来?操作系统文件或类似的东西?从根本上说,没有办法将超过 4000 个字符的文字压缩到 SQL 语句中。但是,如果您有一些回旋余地,则有一些解决方法。我们需要更多细节,特别是 WRT 要求“仅使用 sql 命令”的原因
-
只是为了添加到@APC 注释,你有“fieldname='AA...'”的语句实际上是 SQL 的 VARCHAR2,因此限制了 4K。您正在利用 Oracle 的隐式类型转换,您应该避免这样做。