這兩個 create table 語句有什麼區別?
一種)
SQL> CREATE TABLE xml_tab1(poDoc XMLTYPE); Table created. SQL> desc xml_tab1; Name Null? Type ----------------------------------------- -------- ---------------------------- PODOC PUBLIC.XMLTYPE
b)
SQL> CREATE TABLE xml_tab2 of XMLType; Table created. SQL> desc xml_tab2; Name Null? Type ----------------------------------------- -------- ---------------------------- TABLE of PUBLIC.XMLTYPE
來自這裡的程式碼。
在第一個中,我們正在創建一個類型為 的列
XMLTYPE
。第二個是做什麼的?我什麼時候應該使用第一個或第二個?
第二條語句是創建一個對象表。
幾乎從來沒有真正想要使用對象表的情況。這是在 8i 時間框架中引入的東西,當時 Oracle 正在使數據庫物件導向。雖然許多物件導向的 PL/SQL 增強功能很有用,但我不推薦在 SQL 中使用對像類型。
…但話又說回來… XML 與 SQL 無關,所以一些正常的推理可能不適用…(例如關於對像類型)。
第一個範例是 XMLType,根據您的數據庫版本,基礎儲存定義可能是 Securefile CLOB 或 Securefile Binary XML。由於非最佳性能原因,第一個從 Oracle 12c 及更高版本已棄用。
第二個範例(XMLtype 表)如果語法不像上面那樣更具體,還有 Securefile CLOB 或 Securefile Binary XML。
XMLType 列範例在其使用中更加“SQL”原生(將 XML 插入列,從 xmlcolumn 的表中選擇 * 等),如果 XMLType 表更 XML 原生(將 XML 插入 XML 表,(X)查詢“doc”用法)。
XMLtype 表可以很容易地與 XMLDB XDB 儲存庫(“啟用層次結構”)一起使用,它可以與通過例如 FTP、WebDaV 或通過 HTTP 訪問的查詢的自動 XML schredding 一起使用。對此行為擴展,它們也通過 XMLDB ACL 安全實現受到保護。
XMLType 列可以具有相同的 FTP/WebDAV/HTTP 特徵,但此功能的實現不像 XMLType 表範例那樣“開箱即用”。
BTW Oracle 物件導向的功能是在 Oracle 8.0 中引入的。
以上兩個範例,以其目前形式,將導致與面向對像功能無關的安全文件替代方案。
在 XMLDB 首頁上查看 XMLType 案例的差異以及更多內容
Oracle XML DB in Oracle Database 12c, June 2013 Best Practices for XQuery processing in Oracle Database, 12c June 2013 Best Practices for XML Storage in Oracle Database, 12c Oct 2013
http://www.oracle.com/technetwork/database/database-technologies/xmldb/overview/index.html
更多資訊和操作方法資訊可以在 Oracle XMLDB 論壇和/或 www.xmldb.nl 上找到(例如http://www.liberidu.com/blog/2007/06/24/oracle-11g-xmltype-storage -options/查看有關 XMLType 儲存選項之間語法差異的一些差異)
高溫高壓