2

我在 Oracle 11g 中有这张表:

create table tmp_test_xml (
    name_xml varchar2(4000),
    file_xml xmltype
);

在这个链接oracle binding xmltype,我已经读到要正确插入字段XMLType,我必须使用“Xmltype binding”作为这个插入:

insert into tmp_test_xml values (
          'file.xml',
          xmltype(
            '<?xml version="1.0" encoding="UTF-8"?>
            <list_book>
                <book>1</book>
                <book>2</book>
                <book>3</book>
            </list_book>'
          )
);

但是,如果我尝试在没有绑定的情况下午餐这个插入XMLType,工作得很好:

insert into tmp_test_xml values (
          'file.xml',
            '<?xml version="1.0" encoding="UTF-8"?>
            <list_book>
                <book>1</book>
                <book>2</book>
                <book>3</book>
            </list_book>'
);

现在,辅助使用是否具有约束力?什么是正确的插入?

为什么第二个插入有效?

4

1 回答 1

1

Oracle 会尝试为您完成工作,因此如果您的数据类型与列数据类型不匹配,它会尝试将数据转换为正确的数据类型。

由于您的插入语句中有正确的 xml 字符串,因此数据库已为您转换为 xmltype。

而且我不确定,但我怀疑有一个词必须使用 XMLType 绑定。
但是,如果您在从字符串创建 XML 时需要更多控制权,您可能想要使用它。
检查XMLType 构造函数以获得一个想法。

于 2013-10-29T23:14:37.517 回答