4
我知道NTEXT正在消失,並且這裏存在更大的最佳實踐問題(如在NTEXT列中存儲XML),但是我有一個包含XML的表,我需要從中獲取屬性值。這應該很容易使用sp_xml_preparedocument來完成,但是由於您無法聲明NTEXT類型的局部變量並且我無法弄清楚如何使用表達式來指定傳遞給該函數的XML文本這一事實,因此變得更加棘手。我可以在SQL 2005中像這樣做,因爲XML或VARCHAR(MAX)數據類型,但是我可以爲SQL 2000做些什麼?如何在SQL 2000中對NTEXT查詢的結果使用sp_xml_preparedocument?
DECLARE @XmlHandle int
DECLARE @ProfileXml xml
SELECT @ProfileXml = ProfileXml FROM ImportProfile WHERE ProfileId = 1
EXEC sp_xml_preparedocument @XmlHandle output, @ProfileXml
-- Pluck the Folder TemplateId out of the FldTemplateId XML attribute.
SELECT FolderTemplateId
FROM OPENXML(@XmlHandle, '/ImportProfile', 1)
WITH(
FolderTemplateId int '@FldTemplateId')
EXEC sp_xml_removedocument @XmlHandle
我唯一能想出來的SQL 2000就是使用varchar(8000)。是否真的沒有辦法使用像下面這樣的表達式?
EXEC sp_xml_preparedocument @XmlHandle output, (SELECT ProfileXml FROM ImportProfile WHERE ProfileId = 1)
你也可以通過varchar,char,text等,所以我不會責怪sp_xml_preparedocument。我試圖在另一個存儲過程中包裝sp_xml_preparedocument,但我遇到了不能使用表達式將ntext參數傳遞給包裝過程的相同問題。 – flipdoubt 2009-04-09 19:09:13