4
NTEXTは廃止されており、NTEXT列にXMLを格納するなど、より大きなベストプラクティスの問題があることがわかりますが、XMLを含むテーブルがあり、そこから属性値を抜き取る必要があります。これはsp_xml_preparedocumentを使用して簡単に行う必要がありますが、NTEXT型のローカル変数を宣言できないため、関数に渡されるXMLテキストを式を使って指定する方法がわかりません。私はXMLやVARCHAR(MAX)のデータ型のためにSQL 2005でこれを行うことができますが、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