2013-10-29 52 views
2

我有這個表中的Oracle 11g:插入XML到XmlType將現場

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

在這個環節oracle binding xmltype,我已閱讀,對於正確插入到字段XMLType我一定要使用「XMLTYPE結合」爲此插入:

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>' 
); 

現在,facoltative使用綁定​​與否?什麼是正確的插入?

爲什麼第二次插入的作品?

回答

1

Oracle試圖爲您完成工作,所以如果您的數據類型與列數據類型不匹配,它會嘗試將數據轉換爲正確的數據類型。

由於您的insert語句中有正確的xml字符串,數據庫會爲您轉換爲xmltype。

而我不確定,但我懷疑有一個詞必須使用XMLType綁定。
但是,如果您需要在從字符串創建XML時進行更多控制,您可能需要使用它。
檢查XMLType constructors得到一個想法。