问题标签 [clob]
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.
oracle - Hibernate+Oracle+Clob:属性内容被切换
有没有人听说过这个错误:
我有一个 Java 5 应用程序,它使用 Hibernate 3.3.2 访问 Oracle 数据库 10g,JDBC 驱动程序是 Oracle 轻驱动程序版本 10.2.0.4.0(我认为是最新版本)。数据库访问发生在通过 spring 的 AOP 工具管理的事务期间。有一个数据库表映射到一个 Java 实体,映射是通过注解完成的。此实体中有两个属性是数据库中的 CLOB。它们根据 JPA 使用“Lob”进行注释,并且是 Java 字符串。一切正常,除非两个属性的值都超过 4000 个字符:提交后,值在数据库上被切换,即属性 A 包含属性 B 的值,反之亦然。
这不是一个玩笑!
Eclipse 调试器告诉我,Java 实体在事务关闭之前具有正确的值(我没有调试到 spring 事务处理中)。如果两个 Clob 都使用 Hibernate 注释 'Type(type = "clob")' 进行注释,则不会发生此错误(在这种情况下,它们必须是 java.sql.Clob 类型而不是 String,当然)。
java - JDBC:将 Clob 转换为字符串不显示 \n 行返回
我正在使用其糟糕的 jdbc 驱动程序连接到 4D(第四维品牌)数据库。
我在数据库上有一个 CLOB,当我通过 getString 或 getClob 获取它时,我没有得到行返回,一切似乎都在一行中。
但是,如果我在 NetBeans 数据库资源管理器上进行了选择,然后将值复制并粘贴到编辑器上,它会拾取 \n。
我注意到我得到的是字符 13 而不是 \n\
有人知道为什么这些 \n 行返回没有按应有的方式出现吗?
我正在使用 Windows 7 64 位
巴勃罗
database - Oracle NCLOB 问题
我有以下功能:
当我这样称呼它时:
我收到此错误:
ORA-22835:对于 CLOB 到 CHAR 或 BLOB 到 RAW 转换的缓冲区太小(实际:6058,最大值:2000)
22835. 00000 -“缓冲区太小,无法将 CLOB 到 CHAR 或 BLOB 到 RAW 转换(实际:%s,最大值: %s)"
*原因:尝试将 CLOB 转换为 CHAR 或将 BLOB 转换为 RAW,其中
LOB 大小大于 CHAR 和 RAW
类型的缓冲区限制。
请注意,如果字符长度语义对列有效,则以字符为单位报告宽度,否则以字节为单位报告宽度。
*操作:执行以下操作之一
1. 在执行转换之前使 LOB 变小,
例如,通过在 CLOB 上使用 SUBSTR
2. 使用 DBMS_LOB.SUBSTR 将 CLOB 转换为 CHAR 或 BLOB 转换为 RAW。
问题是 NCLOB 类型的帖子表中的文本大小为 6059 字节。这很奇怪,因为当我在不调用函数的情况下执行此操作时,它运行良好。即当我运行以下脚本时:
它运行没有任何问题。
谢谢你。
oracle - 具有不同字符集的 Oracle clob over dblink
这是场景:
Oracle A:字符集 WE8ISO8859P1
Oracle B:字符集 WE8MSWIN1252
甲骨文 A <- dblink -> 甲骨文 B
我无法直接访问 Oracle B,防火墙问题 :(
我必须从 OracleB 获取一些二进制文件,这些文件位于 CLOB 类型的列中(不要问我为什么,我不能更改为 BLOB)。
我正在使用“选择插入”将文件从 B 获取到 A,然后使用此处找到的 clob_to_blob 函数将它们转换为二进制文件。
我收到了一些损坏的文件,我相信这是因为 Oracle 正在通过 dblink 自动将 WE8MSWIN1252 转换为 WE8ISO8859P1(好吧,列是 CLOB 所以它是文本,对吧?)。
我无法以任何方式更改数据库字符集。
有什么解决方法吗?
提前致谢
c# - "ORA-01036: illegal variable name/number\n" for oracle clob in C#
When I try to create an oracle stored procedure call with clob
input and output in C#, I get the following error:
Here's the code itself:
db2 - 用于获取 clob 值的 DB2 查询
在 DB2 中,我们如何编写查询以从 clob 数据类型列中获取值
c# - 使用大 CLOB 从 C# 调用存储过程的问题
我不是第一个遇到这些问题的人,我会在下面列出一些参考帖子,但我仍在寻找合适的解决方案。
我需要从 C# Web 服务调用存储过程(Oracle 10g 数据库)。Web 服务器安装了 Oracle 9i 客户端,我正在使用 Microsofts System.Data.OracleClient
。
该过程将 XML 作为 CLOB。当XML 超过 4000 字节时(这可能在正常用例中),我偶然发现了以下错误:
ORA-01460 - 请求的转换未实现或不合理
此外,我发现了一个有前途的解决方法,它不直接从 C# 调用存储过程,而是定义了一段匿名 PL/SQL 代码。此代码作为 OracleCommand 运行。XML 嵌入为字符串文字,过程调用是在该代码段中完成的:
不幸的是,一旦XML 超过 32 KB左右,这种方法就会失败,这在我的应用程序中仍然很可能。这次错误源于 PL/SQL 编译器,它说:
ORA-06550:第 1 行,第 87 列:PLS-00172:字符串文字太长
经过一些研究,我得出结论,用我的第二种方法解决问题根本不可行。
在上述帖子之后,我有以下两个选择。
- 切换到 ODP.NET(因为它应该是 Microsoft 已弃用的 DB 客户端中的错误)
- 将 CLOB 插入表中并从那里读取存储的过程
(第一篇文章说有些客户端有问题,但我的(9i)不在上述的 10g/11g 版本范围内。)
你能确认这是仅剩的两个选项吗?或者有其他方法可以帮助我吗?
澄清一下:XML最终不会保存在任何表中,而是由存储过程处理,该存储过程根据 XML 内容在某个表中插入一些记录。
我对这两个选项的考虑:
- 切换到 ODP.NET 很困难,因为我必须将它安装在到目前为止我没有系统访问权限的 Web 服务器上,而且因为我们可能还想在客户端上部署这段代码,所以每个客户端都必须在部署过程中安装 ODP.NET。
- 绕行表使客户端代码更加复杂,并且在数据库适应/扩展 PL/SQL 例程上也需要付出相当多的努力。
database - 甲骨文:LONG 还是 CLOB?
从这两个线程中,
LONG 已过时且已弃用。甲骨文说,
不要创建具有 LONG 列的表。请改用 LOB 列(CLOB、NCLOB)。支持 LONG 列仅是为了向后兼容。
Oracle 还建议您将现有的 LONG 列转换为 LOB 列。LOB 列受到的限制远少于 LONG 列。此外,LOB 功能在每个版本中都得到了增强,而 LONG 功能在多个版本中都是静态的。
但是如果没有此处提到的变通方法,您将无法从远程数据库中读取 CLOB 。
我应该更喜欢哪一个在我的表格中存储一些文本?还是有比这两个更好的解决方案?
sql - 如何将文件读入Oracle中现有的行LOB列?
我必须将数据从一个数据库迁移到另一个数据库。作为准备,我们已经将 CLOB 和 BLOB 数据提取到位于 Oracle 服务器上的单独文件中。数据库在不同的表中包含几个 CLOB 和 BLOB 列,这些列已经用 NULL 值对所有这些行进行了初始化。
如何将文件的内容加载到现有行的 CLOB 或 BLOB 列中。我知道主 ID 键和文件名的确切名称......但我没有找到将这些文件读入表中的有效方法。
例如, SQL Loader 似乎只能添加行或替换整个表。但我只想更新单列。如果需要,我们可以使用 SQL Loader 或普通的 PL/SQL 脚本——不管怎样。
感谢你的帮助。
sql - Microsoft SQl 服务器中的 EMPTY_CLOB()
oracle有CLOB
类型和功能EMPTY_CLOB().
我正在寻找在SQL server中使用的替代方法。
提前致谢。