问题标签 [nclob]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6075 浏览

oracle - 使用多字节字符集确定 CLOB/NCLOB 的字节长度

我正在使用 Oracle 数据库,并希望使用多字节字符集 (UTF-8) 确定 NCLOB 的字节长度。

LENGTHB()不支持具有多字节字符集的 CLOB 或 NCLOBS。我可以将 NCLOB 转换为 BLOB 并获得它的长度。但是没有更好的方法来做到这一点吗?

0 投票
2 回答
2122 浏览

oracle - Oracle 选择 NCLOB 在哪里就像一些字符串

我有一个 Oracle 表,在这个表中我有一列类型为NCLOB. 我想SELECT LIKE对它执行如下操作:

但它不起作用,我收到一条错误消息:

字符串缓冲区太小

但我不明白这怎么可能,因为我知道那个特定记录的列中没有那么多字符!

0 投票
1 回答
5130 浏览

sql - 如何仅将 Oracle NCLOB 中的前 4000 个字符复制到 NVARCHAR2(4000) 值?

我是一名程序员,我正在编写一些 SQL 代码来从远程 Oracle 数据库中提取数据并将其插入到我们本地 MS SQL Server 上的一些表中。

我需要将 Oracle NCLOB 列带到我们的 MS SQL Server 数据库中的 NVARCHAR 列。

我们没有 DBA 员工为我做这件事。

就我的目的而言,拥有整个 NCLOB 值并不重要,因此 4000 个字符只是我选择的一个任意大的数字。

我的目标是在 Oracle 端的 NVARCHAR2 字段中拥有尽可能多的数据,并且仍然保持在日常数据刷新中通过网络带来的实用性。

我已经看到很多关于获取所有数据以及获取超过 4000 个字符的数据等解决方案的参考。但是,我正在寻找一个简单的版本,我可以轻松地放入和维护而无需繁重的 DBA 级别的工作。

0 投票
1 回答
380 浏览

oracle - 从 VARCHAR2 转换为 NCLOB (oracle)

我收到一条 data_type = VARCHAR2 的列消息。它已经存储了一些数据。我希望此列的类型为 NCLOB。此列的代码集应为 UTF-8。

我做了以下事情:

  • tempmessage在我的 NCLOB 类型的表中添加了一列
  • 充满tempmessage讯息
  • 将消息重命名为旧消息(这样我就不会使用任何数据(直到它起作用))
  • 重命名tempmessage为消息

然后我尝试了我的集成测试,我得到了异常:java.sql.BatchUpdateException: ORA-01400: Insert of NULL into ("BATCH_LOG"."MESSAGEOLD") not possible。

我做错了什么?

0 投票
1 回答
125 浏览

oracle - 使用 N 函数问题更新 NClob

我正在使用 N 函数来更新 SQL 查询中的 NClob。但是,使用 N 函数的更新不允许我更新超过 1900 个字符。去掉 N 函数后。我能够将 1900 多个字符更新到我的 NClob 列。

谁能帮我解释为什么我不能使用 N 函数更新 NClob 列?有什么限制吗?

代码是

StringBuilder updateQuery = new StringBuilder("更新表名设置列名="); updateQuery.append(" = N'").append(NClobContent).append("'").append(" , "); ps.execute(updateQuery.toString());

0 投票
0 回答
395 浏览

oracle - Oracle OCI 判断字段是 NCLOB 还是 CLOB

我正在寻找一种简单的方法来确定 Oracle 中的字段是否为 NCLOB。

当我对字段执行属性获取时,我总是返回 112 (SQLT_CLOB),无论该字段是 CLOB 还是 NCLOB。这是我正在谈论的代码片段。

相关查询:'从 NCLOBTest2 中选择数据。, DATA在这种情况下是一个NCLOB 。

没有SQLT_NCLOB这样的东西吗?我需要知道该字段是 CLOB 还是 NCLOB,以便以后可以正确读取 N/CLOB。我知道如果我有一个实际的 LOBLocator 实例,我可以调用 LobCharSetForm 和 LobCharSetID,但这需要许多额外的步骤。

谢谢!

编辑:这是我在定义字段时尝试获取 LobCharSetID 所采取的步骤的摘要。类似的代码在绑定参数时才发现。也许有人可以告诉我我错过了哪些步骤。

最后两行是有问题的。我该怎么做才能正确轮询 LobLocator 的字符集。请注意 LobLocator 的字符集与定义句柄的字符集不同。定义句柄的字符集可能是 OCI_UTF16ID,而 Clob 的字符集可能是 OCI_WE8MSWIN1252。SQLCS 值也是如此,它也不必匹配。

0 投票
0 回答
601 浏览

java - Oracle NCLOB 中的特殊字符

我正在处理一个 Oracle 10g 数据库,并提供了以下存储过程:

在我的 Java 代码中,我以这种方式准备语句:

我通过这种方式获得了我需要的数据:

SYNOPSIS_TEXT 字段是NCLOB,但我使用字符串作为其内容,因为我确定它不会超过 MAX_INTEGER。使用的“国家字符集”是Unicode

在从该字符串生成的 JSON 中,我可以看到正确处理的字符,如逗号、连字符、破折号、单引号、点、括号、冒号等,但我遇到了左单引号/ U+2018 ( ' ' )等特殊字符的问题, 显示不正确。我还可以在文本中看到换行符( \n )和引号( \" )。

以这种格式向消费者返回文本是否正确,或者我应该更好/不同地处理它?

0 投票
0 回答
252 浏览

java - dbunit 为 NCLOB 列插入垃圾值

我遇到了一个独立于 dbunit jar 版本的问题,因为我尝试使用 dbunit-2.0.jar、dbunit-2.2.1.jar、dbunit-2.4.9.jar、dbunit-2.2.3.jar 和 dbunit-2.3 .0.jar 并且独立于 Oracle 数据库版本,正如我在 oracle11g 和 oracle12c 上尝试的那样。我尝试通过 xml 文件将数据插入到表的数据类型 NCLOB 的列中,它会插入无用的垃圾字符到系统进行进一步处理。

但是,如果我将该列的数据类型更改为 CLOB,则在使用 dbunit 通过 XML 进行 Oracle 数据库插入操作时,它工作得非常好。我不确定这种行为的原因是什么。

我们的应用程序支持通过 Hibernate 引擎插入 NCLOB 数据以及对 Oracle 数据库进行直接 SQL 插入查询,但仅在使用 dbunit 设置执行测试用例时插入垃圾字符。

在此处输入图像描述

我们无法将该列的数据类型从 NCLOB 更改为 CLOB,因为我们的应用程序支持多语言,因此我们不想在此数据上强制执行任何字符集。请建议,可以做什么。

0 投票
0 回答
1298 浏览

oracle - Oracle NCLOB 数据类型的最大字符长度是多少?

我在表中添加了NCLOB列:

我尝试在此列中插入长度等于 22000 的大文本。但我收到“值太长”错误。的最大长度是NCLOB多少?(我使用 Oracle 11g)

0 投票
0 回答
82 浏览

oracle - 获取 NCLOB 西里尔文值时出错

这是我的问题:

我尝试将 CLOB_TEXT (NCLOB) 列中的数据放入变量 my_clob(NCLOB) 中。

很好......但是当 CLOB_TEXT 中的文本是西里尔文时,问题就来了。

当我打印 my_clob 时,它在每个字符中都显示为 ¿。有什么解决办法吗?

来自数据库的字符集:

NLS_NCHAR_CHARACTERSET(AL16UTF16)
NLS_CHARACTERSET(WE8ISO8859P1)