当前位置: 首页 > 知识库问答 >
问题:

从clob转换varchar2的ORA-06502

巫马淳
2023-03-14

我用clobs和VARCHAR2做了一点实验。问题是,我们在数据库表中有很多XML,我希望尽快下载XML。由于我需要使用C#DevArt组件,我尝试了各种方法,发现clobs(它们涉及每行到数据库的一次往返)比VARCHAR2慢得多。

 select c.xml.getstringval() from customers c where 
 length(t.xml.getclobval()) = length(dbms_lob.substr(c.xml.getclobval(), 4000, 1))

现在有人知道为什么查询在所有情况下都不起作用了吗。或者有没有人建议如何编写一个查询来查找clob是否可以作为VARCHAR2检索?

共有1个答案

司徒隐水
2023-03-14

substr返回具有一定字节数的a字符串

Oracle文档指出,SUBSTR函数的amount参数表示要为CLOB读取的字符数(而不是字节数)。

它不能只使用长度,因为我在使用像àéoderè)这样的多字节哈拉克人时遇到了麻烦

请给我们一个小的测试项目,这样我们就可以在我们的环境中重现这个问题。还指定:

  • 您的连接字符串(大致没有凭据)
  • 相应数据库对象的DDL/DML脚本
  • Oracle服务器的版本、NLS_LANGUAGE、NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET参数
 类似资料:
  • 我有一个Oracle表,其中列类型为CLOB。我想保留列顺序并将数据类型更改为VARCHAR2。该列只包含文本。 我得到了一个标准的信息: 我们将不胜感激。我已经在这方面工作了一段时间了。如果你有任何问题请告诉我。

  • 我甚至尝试过直接分配 得到同样的结果。 编辑

  • 我得到这样的错误:错误:ORA-06502:PL/SQL:数值或值错误:字符串缓冲区太小

  • 我有一个函数,计算大字符串的哈希值!首先,我编写了一个游标T1_CUT,它可以包括SELECT语句的变量计数,类似于: 每个SELECT可以包含一行或多行。因此,我在每个SELECT中将所有值连成行,并且ALL选择一个大字符串V_RESULT中的值,类型为VARCHAR2(32767)。之后,我使用MD5获得这个大字符串的哈希值(S_HASH_RESULT)。它可以工作8个月左右,但几天前我得到了

  • 问题内容: 我有一个表,其中有一个名为的列。其数据类型为。 我想对这一栏进行总结。 总计=> 如何使用ANSI SQL或Oracle SQL执行此操作? 问题答案: 您可以使用来分隔小时,分钟和秒,然后将其向上,最后使用function将其转换为type。

  • //大家好。我的问题是我不能在clob字段中写大日期。curentli我可以写长度不大于4000的字符串。你能解释一下为什么我不能写clob到clob字段。我正在使用: Oracle数据库11g企业版11.2.0.1.0 列表项hibernate 4.2.6.final 列表项ojdbc 11.1.0.7.0 我的恩典是: 我更新entety的代码: 我尝试了几种方法来创建Clob: