开发者

Can someone explain how OpenXML works(in this SP)?

I am looking at this tutorial

and it confuses me as I don't get the SP

CREATE PROCEDURE [dbo].[spTEST_InsertXMLTEST_TEST](@UpdatedProdData nText)
AS 
 DECLARE @hDoc int   

 exec sp_xml_preparedocument @hDoc OUTPUT,@UpdatedProdData 

 INSERT INTO TBL_TEST_TEST(NAME)
 SELECT XMLProdTable.NAME
    FROM OPENXML(@hDoc, 'ArrayOfTBL_TEST_TEST/TBL_TEST_TEST', 2)   
       WITH (
                ID Int,                 
                NAME varchar(100)
            ) XMLProdTable

EXEC sp_xml_removedocument @hDoc

First I am using SQL 2005 and do I need to install something on the server to get OPENXML to work? Next I don't get what these statements do

// not sure what @hDoc is for and why it is an int
 DECLARE @hDoc int   

 // don't get what this is and where the output is.
 exec sp_xml_preparedocument @hDoc OUTPUT,@UpdatedProdData 

// don开发者_如何学编程't get why it is "XMLProdTable" and if it always has to be like this
 SELECT XMLProdTable.NAME

// pretty muct don't get anything what is happening after OPENXML
 FROM OPENXML(@hDoc, 'ArrayOfTBL_TEST_TEST/TBL_TEST_TEST', 2)   
           WITH (
                    ID Int,                 
                    NAME varchar(100)
                ) XMLProdTable

// Don't know what this is really executing
EXEC sp_xml_removedocument @hDoc

Thanks


// not sure what @hDoc is for and why it is an int DECLARE @hDoc int

That will be used in the next call, it is an output parameter

// don't get what this is and where the output is. exec sp_xml_preparedocument @hDoc OUTPUT,@UpdatedProdData

It is calling the sp_xml_preparedocument, output just means it is an output parameter, @hDoc will be populated with the value in the proc

// don't get why it is "XMLProdTable" and if it always has to be like this SELECT XMLProdTable.NAME

XMLProdTable is the alias used in the next part, the CTE is named XMLProdTable

// pretty muct don't get anything what is happening after OPENXML FROM OPENXML(@hDoc, 'ArrayOfTBL_TEST_TEST/TBL_TEST_TEST', 2)
WITH ( ID Int,
NAME varchar(100) ) XMLProdTable --alias

It populates the CTE with values from the XML document under the ArrayOfTBL_TEST_TEST/TBL_TEST_TEST tag

// Don't know what this is really executing EXEC sp_xml_removedocument @hDoc

This is releasing the document from memory

Take a look at the samples here http://msdn.microsoft.com/en-us/library/ms186918.aspx

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜