天天看點

在SQL中通路XML字元串

使用sp_xml_preparedocument可以将XML字元串緩存到SQLServer的記憶體中,并提供一個句柄來通路他

使用OPENXML可以讀取緩存中的資料

使用sp_xml_removedocument可以釋放掉緩存中的資源 

下面是一個示例

DECLARE   @XmlText   VARCHAR ( 8000 )

DECLARE   @ProductInfo   TABLE (

    ItemNo  CHAR ( 10 ),

    Description  varchar ( 200 )

)

DECLARE   @XmlHanlder   INT

SET   @XmlText   =   '

<root>

    <ProductInfo>

        <ItemNo>00-000-001</ItemNo>

        <Description>Keyboard</Description>

    </ProductInfo>

    <ProductInfo>

        <ItemNo>00-000-002</ItemNo>

        <Description>Hard Disk</Description>

    </ProductInfo>

</root> '

EXEC  sp_xml_preparedocument  @XmlHanlder  OUTPUT,  @XmlText

INSERT   @ProductInfo (

    ItemNo,

    Description) 

SELECT  

    ItemNo,Description 

FROM

OPENXML( @XmlHanlder ,  ' /root/ProductInfo ' , 2 ) 

WITH  (

    ItemNo  CHAR ( 10 ),

    Description  varchar ( 200 ))

EXEC  sp_xml_removedocument  @XmlHanlder

SELECT   *   FROM   @ProductInfo