当前位置: 首页 > 面试题库 >

如何在SQL Developer中避免“变量长度太长”错误?

从焱
2023-03-14
问题内容

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

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

有什么办法解决吗?

文本长度为2670个字符,通过进行了转换utl_i18n.string_to_raw,如[我如何在Oracle SQL
Developer中编辑BLOB(包含JSON)所述。并且全部在查询中的一行上。

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


问题答案:

ARAW限制为2000个字节。如果您的数据长于此长度,则需要将其存储在a中CLOB,然后将其转换CLOB为a
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;
/


 类似资料:
  • 我试图使用C#将一些字符串值插入到mysql表中的中。 每次值都会不断变化。 有时,应用程序会引发异常。 我浏览了一些帖子: “列的数据太长”-为什么 数据截断:第1行“logo”列的数据太长 mysql-Mysql2::错误:第1行的列“description”的数据太长 数据截断:第1行“Phone”列的数据太长 MySQL数据过长错误 但我的问题是: 如何以编程方式决定长度字符串(或其他数据

  • 问题内容: 我要在Oracle SQL Developer中针对Oracle 10g服务器运行以下SQL: 当我尝试运行它时,出现以下错误: 我的字符串有时会长于4000个字符。关于如何解决这个问题的任何想法吗? 问题答案: 您将需要使用CLOB作为XMLTYPE()的输入,而不是VARCHAR。 使用从文件中加载xml,或通过将xml分成32000个字符块并附加到CLOB的方式。

  • 问题内容: 我们都知道全局变量只是最佳实践。但是在有些情况下,没有它们很难编写代码。您使用什么技术来避免使用全局变量? 例如,在以下情况下,您将如何不使用全局变量? JavaScript代码: 相关标记: 此代码来自具有多个的网络表单。它一次上传一个文件,以防止大量请求。它通过POST到iframe来完成此操作,等待响应触发iframeonload,然后触发下一个提交。 您不必专门回答此示例,我只

  • 问题内容: 我的问题是我必须在try语句中设置变量,否则会出现编译错误。 稍后我需要使用该变量,但现在超出了范围,所以我相信。我在try语句外部初始化了该变量并将其设置为null,我以为可以在外部访问它,但仍然得到了。 下面的代码,其中有很多代码使阅读变得更容易-我知道这是不好的代码,但是我是Servlets的新手,只想看看它与所有活动部件一起运行时应如何工作。 我创建了另一个类,该类调用crea

  • 问题内容: 我想制作一个页面来显示数据库中的一些数据,因此我创建了一些函数来从数据库中获取数据。我只是Node.js的新手,据我了解,如果我想在一个页面中使用所有这些内容(HTTP响应),则必须将它们全部嵌套: 如果有很多类似的功能,那么 嵌套就会成为问题 。 有办法避免这种情况吗?我想这与如何组合多个异步函数有关,这似乎是基本的东西。 问题答案: 有趣的观察。请注意,在JavaScript中,您

  • 问题内容: 如何避免使用!进行力解开的操作,因为使用此方法通常是错误的选择。 如下所示的代码中有什么更好的选择,使用它可以使代码看起来更简单,并且可以通过if检查变量!被调用永远不会为零,因此不会崩溃。 我的教练向我们介绍了bang(!)运算符,然后告诉我们不要再使用它了。告诉我们原因,如果可选为nil,它将使我们的应用程序崩溃。 但是,我发现自己处于类似bang运算符似乎是最简洁和最安全的选择的