كيف يمكنني استخدام sp_xml_preparedocument على نتيجة استعلام NText في SQL 2000؟

StackOverflow https://stackoverflow.com/questions/735372

سؤال

أعلم أن NTEXT يذهب بعيدا وأن هناك مشاكل أكبر ممارسات أكبر هنا (مثل تخزين XML في عمود NText)، ولكن لدي جدول يحتوي على XML الذي أحتاج إليه من حيث قيمة سمة. يجب أن يكون هذا سهل الاستخدام باستخدام SP_XML_PREPAREDOCEMENED ولكن أصبح أكثر صعوبة من خلال حقيقة أنه لا يمكنك إعلان متغير محلي من النوع NTEXT ولا يمكنني معرفة كيفية استخدام تعبير لتحديد نص XML الذي تم تمريره إلى الوظيفة. يمكنني أن أفعل ذلك مثل هذا في SQL 2005 بسبب أنواع بيانات XML أو Varchar (MAX)، ولكن ماذا يمكنني أن أفعل ل 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)
هل كانت مفيدة؟

المحلول

سؤال عظيم .. ولكن لا يوجد حل

أفكار:

  • لا يمكنك التفاف استدعاء المحدد في UDF (لإنشاء نوع من Dummy NText Local Var)
  • لا يمكنك التفاف sp_xml_preparedocument اتصل في Scalar UDF (لاستخدامه في المختار) لأنه لا يمكنك الاتصال بممتد المخزن Procs
  • لا يمكنك تسليم مكالمة لتشغيل ديناميكيا لأنك ستضغط على حدود السلسلة وقضايا SCOP
  • كما ديتو مكالمة ذاتية باستخدام openquery
  • لا يمكن إضافة TextPtr + ReadText كمعلمة ل sp_xml_preparedocument

فلماذا sp_xml_preparedocument خذ ntext كأنبغاء؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top