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