【发布时间】:2015-09-10 12:13:30
【问题描述】:
我正在尝试使用 PL/SQL Developer 将记录插入 Oracle 数据库。
我的表中有一个 CLOB 数据类型,我要保存的 XML 大约有 60000 个字符。
当我直接尝试使用插入语句执行此操作时,它给了我 ORA-01704 错误。所以我在论坛上阅读并尝试使用绑定变量来做到这一点,但我仍然收到“字符串文字太长”的消息。
我的绑定变量代码是:
declare
vClobVal varchar2(32767) := 'String of 60000 characters';
update table_name set column where clause.
end;
我了解varchar2(32767) 的字符数限制为 32767。但是当我必须插入 60000 个字符时该怎么办?我也尝试过使用 CLOB 变量:
declare
vClobVal clob := 'String of 60000 characters';
update table_name set column where clause.
end;
这也给了我同样的错误。
【问题讨论】:
-
vClobVal并不是一个真正的绑定变量,它是一个 PL/SQL 局部变量(尽管它在您的插入中用作绑定变量,有点像他的解析器)。 CLOB 版本仍在尝试使用 60000 个字符的字符串文字 - 单引号之间的位。您没有尝试用该文字实际创建一个 CLOB,因为无法创建文字本身。您必须使用较短的字符串逐步构建您的 CLOB,这并不总是理想的。你的 XML 究竟来自哪里? -
几乎是this 的复制品,而
dbms_lob.append的答案也适用于此。但如果 XML 在文件中,则有更好的方法来加载它。