Stored procedures 有人能解释一下OpenXML(在这个SP中)是如何工作的吗?
我正在看这个教程 这让我很困惑,因为我没有得到SPStored procedures 有人能解释一下OpenXML(在这个SP中)是如何工作的吗?,stored-procedures,openxml,Stored Procedures,Openxml,我正在看这个教程 这让我很困惑,因为我没有得到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
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
首先,我使用的是SQL2005,我是否需要在服务器上安装一些东西才能使OPENXML正常工作?接下来我不明白这些陈述是怎么做的
// 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
谢谢
//不确定@hDoc的用途和原因
它是一个int声明@hDoc int
将在下一次调用中使用,它是一个输出参数
//不知道这是什么,在哪里
输出为。执行官
sp_xml_preparedocument@hDoc
输出@UpdatedProdData
它正在调用sp_xml_preparedocument,output只是表示它是一个输出参数,@hDoc将在proc中填充该值
//不明白为什么它是“XMLProdTable”
如果总是这样的话
选择XMLProdTable.NAME
XMLProdTable是下一部分中使用的别名,CTE名为XMLProdTable
//相当多我什么都没得到什么什么
是在来自的OPENXML之后发生的
OPENXML(@hDoc,
“ArrayOfTBL_测试/TBL_测试”,
2) 与( ID Int,
名称varchar(100) )XMLProdTable——别名 它使用ArrayOfTBL_TEST_TEST/TBL_TEST_TEST标记下的XML文档中的值填充CTE //我不知道这到底是什么 执行EXEC sp_xml_removedocument @hDoc 这将从内存中释放文档
看看这里的样本那么,这个数组的BL_测试/TBL_测试标签是什么?比如我在哪里换?它是如何设置的?选择XMLProdTable.NAME如何?我是否需要为表中的每一列(如XMLProdTable.NAME、XMLProdTable.QTY等)都添加一个名称?如果您使用SQL Server 2005本机XQuery支持(@xml.query()、@xml.nodes()、@xml.value()等),那么实际上不需要所有这些内容