找不到句柄0的预处理语句。(SQL错误)

时间:2016-02-16 08:58:21

标签: sql sql-server xml

我正在尝试使用以下语句将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的预处理语句。语句有   已被终止。

关于这个错误的任何想法上面的声明?

1 个答案:

答案 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方法。

如果您需要帮助,请告诉我们!