gpt4 book ai didi

sql - 如何避免SQL Developer中的 "raw variable length too long"错误?

转载 作者:行者123 更新时间:2023-12-03 16:16:13 24 4
gpt4 key购买 nike

我正在使用大量文本更新BLOB,但出现此错误:

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

有什么办法解决吗?

How do I edit BLOBs (containing JSON) in Oracle SQL Developer?所述,该文本长2670个字符,并通过 utl_i18n.string_to_raw进行转换,并且全部在查询中的一行上。

更新:有问题的BLOB已经包含2686个字符长的文本,比我要插入的文本长。

最佳答案

RAW限制为2000个字节。如果您的数据长于此长度,则需要将其存储在CLOB中,然后将CLOB转换为BLOB,但不幸的是,它比string_to_raw函数复杂一些。假设您可以将整个字符串分配给CLOB变量,只要字符串的长度小于32676字节,该变量就应该起作用,这样的事情将起作用。如果长度超过此长度,则需要分段写入CLOB,然后转换为BLOB

declare
l_blob blob;
l_clob clob := rpad('{"foo": {"id": "1", "value": "2", "name": "bob"}}',3200,'*');
l_amt integer := dbms_lob.lobmaxsize;
l_dest_offset integer := 1;
l_src_offset integer := 1;
l_csid integer := dbms_lob.default_csid;
l_ctx integer := dbms_lob.default_lang_ctx;
l_warn integer;
begin
dbms_lob.createTemporary( l_blob, false );
dbms_lob.convertToBlob( l_blob,
l_clob,
l_amt,
l_dest_offset,
l_src_offset,
l_csid,
l_ctx,
l_warn );
update json_data
set data = l_blob;
end;
/

关于sql - 如何避免SQL Developer中的 "raw variable length too long"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9743084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com