我正在使用Oracle 11g。我的一个表有一个blob类型的列。我试图用与列中现有值相同长度的随机字符串替换此列中的值。这就是我所做的:
`update order set info = XMLSERIALIZE(CONTENT XMLTYPE('<edit>'||DBMS_RANDOM.STRING('X', length(info))||'</edit>') as blob) where info is not null;`
由于其中一行的长度为190,000,我遇到了错误
字符串连接结果超过最大大小。
还有其他办法吗?
答案 0 :(得分:0)
maximum length of a VARCHAR2 in SQL is 4000 bytes in Oracle 11g。您尝试运行此语句的任何行超过3987字节(<edit></edit>
标记为4000减去13)将导致错误,因为您将超过4000字节限制。
你可以:
DBMS_RANDOM.STRING('X', GREATEST(length(info), 3987))
length(info)
并使用dbms_lob.append
将数据附加到lob变量。编辑:使用GREATEST而不是MAX。