我正在尝试使用以下语句将XML解析为XML表:
INSERT INTO NewDeploymentComponentDetails([Value],[ComponentTypeId])
SELECT [Value],[ComponentTypeId]
FROM OPENXML(@hDoc, 'Deployment/Components/Component/ComponentDetails')
WITH
(
Value NVARCHAR(255) 'Value',
ComponentTypeId INT '../ComponentTypeId'
)
但是得到错误:
找不到句柄0的预处理语句。语句有 已被终止。
关于这个错误的任何想法上面的声明?
答案 0 :(得分:3)
你必须知道两件事:
1)必须通过调用系统存储过程FROM OPENXML
来初始化sp_xml_preparedocument
。因此,您可以将句柄(您的@hDoc
)(设置为值不等于零)作为准备好的XML数据的ID。
致电后,您应该取消分配调用sp_xml_removedocument
的文件。
请在此处阅读:https://msdn.microsoft.com/en-us/library/ms186918.aspx
2)FOR OPENXML
绝对过时,不应再使用了。在极少数情况下,它可能有助于提高性能,但您应该切换到现代XPath / XQuery方法。
如果您需要帮助,请告诉我们!