2016-02-16 102 views
2

我试图解析XML到表中的XML与下面的语句:找不到与准备语句句柄0(SQL错误)

INSERT INTO NewDeploymentComponentDetails([Value],[ComponentTypeId]) 
SELECT [Value],[ComponentTypeId] 
FROM OPENXML(@hDoc, 'Deployment/Components/Component/ComponentDetails') 
WITH 
(
     Value NVARCHAR(255) 'Value', 
    ComponentTypeId INT '../ComponentTypeId' 
) 

但得到错误:

Could not find prepared statement with handle 0. The statement has been terminated.

任何关于上述错误wrt语句的想法?

+0

嗨,Siya,我刚才看到,你几分钟前就“在这里”。你需要进一步的帮助吗? – Shnugo

回答

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

如果您需要帮助,请让我知道!

+0

感谢您的解决方案,它提供了帮助。 – Siya