2016-02-16 63 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