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