سؤال

أقوم بتحميل XML في SQL باستخدام OpenXML أثناء إعلان المتغير الأقصى الذي يمكنني أن أذهب إليه هو 8000 حرف:

DECLARE @xml_text varchar(8000)

منذ النص، لا يسمح باستخدام NTEXT مع OpenXML ما بدائل أخرى يجب علي تحميل XML بأكمله (أكثر من 20000 حرف) في SQL؟

هل كانت مفيدة؟

المحلول

يجب أن تكون قادرا على استخدام varchar (MAX) (SQL 2005 و أعلى)

DECLARE @idoc int
DECLARE @doc varchar(max)
SET @doc = '
<myxml>
<node nodeid="1" nodevalue="value 1">

</node>

</myxml>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT
    *
FROM
    OPENXML (@idoc, '/myxml/node',1) WITH ( nodeid varchar(10), nodevalue varchar(20) )

نصائح أخرى

إذا كنت تستخدم SQL 2005 أو أفضل، يمكنك استخدام نوع بيانات XML نفسه. بهذه الطريقة ستتمكن من تجنب استخدام OpenXML:

DECLARE @XDoc XML
SET @XDoc = '<Customer>
                 <FirstName>Fred</FirstName>
                 <LastName>Flinstone</LastName>
             </Customer>
             <Customer>
                 <FirstName>Barney</FirstName>
                 <LastName>Rubble</LastName>
             </Customer>'

SELECT 
    Tbl.Col.value('FirstName[1]', 'VARCHAR(MAX)'),
    Tbl.Col.value('LastName[1]', 'VARCHAR(MAX)')
FROM @XDoc.nodes('/Customer') Tbl(Col)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top