gpt4 book ai didi

xml - ORA-01704 : string literal too long 'Error when inserting XML document in Oracle XMLTYPE column type'

转载 作者:行者123 更新时间:2023-12-01 12:57:34 24 4
gpt4 key购买 nike

当我尝试将 SQL 表中的数据插入 Oracle 表时,出现错误“ORA-01704:字符串文字太长”。在我的 Oracle 表中,我有一个 XMLTYPE 列类型的列。当我创建表时,我指定了这样的 XML 列:

  CREATE TABLE REPORTS (
...
XML XMLTYPE NULL );

除此列外,在它之前还有其他 23 列,当我从插入语句 XML 列中排除时,插入将通过。 XML 列包含表中所有其他 23 列的 XML 格式的数据。我是否应该在我的 XML 列中添加一些额外的长度规范或其他规范?

最佳答案

我的猜测是您将 XML 作为文字传递给插入语句。 Oracle 的 SQL 最多只能处理 4000 个字符的文字。否则,您需要使用绑定(bind)变量并将其分块传递。或者您可以使用 PL/SQL。

例如,这应该没有问题,因为文字

<MyMessage>Meeesaaagee</MyMessage> 

只有 34 个字符:

CREATE TABLE TEST_REPORTS
(
ID NUMBER,
DESCRIPTION VARCHAR2 (50),
XML XMLTYPE NULL
);

INSERT INTO TEST_REPORTS (ID, DESCRIPTION, XML)
VALUES (1, 'BLAH BLAH', XMLTYPE.CREATEXML ('<MyMessage>Meeesaaagee</MyMessage>'));

COMMIT;

但是如果你有:Meeesaaagee(+ 3976 个额外字符)

您将收到 ORA-01704: string literal too long 错误。

你可以试试:

DECLARE
in_xml_value varchar2(32767);
BEGIN
in_xml_value := '<MyMessage>MeeesaaageeBLAHBLAHBLAH<--repeat--></MyMessage>';
INSERT INTO TEST_REPORTS (ID, DESCRIPTION, XML)
VALUES (1, 'BLAH BLAH', XMLTYPE.CREATEXML (in_xml_value);
commit;
END;
/

如果不使用 PL/SQL 代码并使用绑定(bind)变量,那么您必须与应用程序开发人员交谈。它不在 Oracle 范围内(也不在我的知识范围内)。

关于xml - ORA-01704 : string literal too long 'Error when inserting XML document in Oracle XMLTYPE column type' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38147543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com