XML文檔插入SQL Server2000資料庫(1)

來源:互聯網
上載者:User

我們可以通過openxml函數和SQL server 2000中的兩個系統預存程序sp_xml_preparedocument 和sp_xml_removedocument 將XML文檔映射為相應的欄位插進資料庫。

系統預存程序sp_xml_preparedocument 用來建立一個能被插入資料庫的XML文檔的內部表示,即一個檔案號,該系統預存程序返回一個可以用於訪問XML文檔的內部表示的檔案號.sp_xml_removedocument 用於刪除XML文檔的檔案號.也可以理解為,sp_xml_preparedocument 用於給XML文檔分配記憶體空間,檔案號是指向該儲存空間的一個指標,通過對該檔案號的操作來操作該XML檔案,而sp_xml_removedocument 用於回收記憶體空間.

sp_xml_preparedocument預存程序的文法:
sp_xml_preparedocument handledoc OUTPUT, xmltextstring
handledoc表示待處理XML文檔的檔案號,作為該預存程序的輸出(OUTPUT);
xmltextstring表示待處理的XML檔案,以字串的形式表示.

sp_xml_removedocument 預存程序的文法:
sp_xml_removedocument  handledoc
handledoc代表待刪除XML文檔的檔案號

openxml函數的文法:
openxml(handledoc,rowpattern,flagvalue) with tablename/definition structure
handledoc表示XML文檔的檔案號;
rowpattern表示用來識別XML文檔有效性和節點的XPath模式的字串,如果一個XML的根節點是BOOKS,其直接子節點是BOOK,該字串的值為'/BOOKS/BOOK';
flagvalue表示XML文檔與表欄位之間的映射關係,如果該值為1表示將rowpattern的屬性作為欄位來進行映射,如果為2表示將rowpattern的子項目作為欄位來進行映射;
tablename/definition structure表示待插入的表名,也可以是一個定義的表結構(見下例)。

DECLARE @doc varchar(1000)
DECLARE @idoc int

 

SET @doc = '<ROOT>
<TICKET>
 <PASSENGERNAME> TOM WILKINS </PASSENGERNAME>
 <AGE> 20 </AGE>
 <SOURCE> CHICAGO </SOURCE>
 <DESTINATION> MIAMI </DESTINATION>
 <DATEOFTRAVEL> 2001-09-10 </DATEOFTRAVEL>
 <CLASS> FIRST CLASS </CLASS>
 <FARE> 200 </FARE>
 <STATUS> Confirmed </STATUS>
     </TICKET>
</ROOT>'

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

SELECT *
FROM OPENXML (@idoc, '/ROOT/TICKET', 1)
WITH (PASSENGERNAME varchar(30),
 AGE int,
 SOURCE CHAR(20),
 DESTINATION char(20),
 DATEOFTRAVEL datetime,
 CLASS char(20),
 FARE money,
 STATUS char(20)
)
INSERT TICKET

SELECT *
FROM OPENXML(@idoc, '/ROOT/TICKET')
WITH TICKET

EXEC sp_xml_removedocument @idoc
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.