【问题标题】:Insert CLOB into Oracle database from SQL Developer从 SQL Developer 将 CLOB 插入 Oracle 数据库
【发布时间】:2014-04-02 08:12:39
【问题描述】:

我想在某列的所有单元格中插入相同的长字符串,是CLOB类型。

它说我应该使用“绑定变量”来做到这一点。所以我用谷歌搜索了这个:

variable xmlstuff CLOB;
exec :xmlstuff := '<?xml version="1.0"?> ... really long xml...';

UPDATE TABLE_NAME SET COLUMN_NAME = '&&xmlstuff';

现在还是说

The string literal is longer than 4000 characters.

在这种情况下,绑定变量的正确用法是什么?

【问题讨论】:

  • 顺便说一下,&amp;&amp;xmlstuff 不是绑定变量。
  • 为什么将 XML 用作 CLOB 而不是 XMLType?
  • @evenro:因为以前的程序员。

标签: oracle oracle11g oracle-sqldeveloper


【解决方案1】:

如果您使用 C# 或 Java 进行编程 - 只需使用 OracleCLOB 对象,它将完成所有必要的步骤。

如果您想在 SQL 或 PL/SQL 中使用 CLOB, 需要分配,使用后释放。
搜索DBMS_LOB信息。

关于 4000 字节的限制 - 这是 SQL 中的 varchar2 限制。
绕过这个 - 你可以使用 PL/SQL - 它将你限制为 32KB 的 varchar,这并不接近你可以在 CLOB 中保存的 4GB,但这是“自动”创建 CLOB 的限制。
如果您的字符串长于 32K - 您必须使用 DBMS_LOB 将数据加载到 clog 对象中,方法是在 clob 对象上使用 append。

这是我找到的最快链接:http://geekswithblogs.net/robertphyatt/archive/2010/03/24/write-read-and-update-oracle-clobs-with-plsql.aspx

我想快速回答,所以如果您在获得此信息后无法解决您的问题,请告诉我 - 我会尽力解释得更好。

【讨论】:

  • 哇,看起来很难。我认为答案会是“只需将此行添加到 SQL 脚本中即可。”
  • 对不起 :( 对于短字符串它可以工作 - 但对于超出限制的东西 - 你需要更加努力......
  • 谢谢。这可能会对和我有相同想法的人有所帮助。
  • 只是为了澄清 - 它是 4000 字节的限制(刚刚在上面修复) - 对于每个字符为 2 个字节的语言,它将是 2000 个字符......(重要的是要准确......)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
相关资源
最近更新 更多