Как мне преодолеть ограничение в 8000 символов в OpenXML? - PullRequest
1 голос
/ 28 мая 2009

Я загружаю XML в SQL, используя OpenXML, и в то же время объявляю переменную, максимальное значение которой я могу использовать - 8000 символов:

DECLARE @xml_text varchar(8000)

Поскольку текст, ntext не разрешается использовать с openXML, какие есть альтернативы для загрузки всего XML (более 20000 символов) в SQL?

Ответы [ 2 ]

4 голосов
/ 28 мая 2009

Если вы используете 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)
4 голосов
/ 28 мая 2009

Вы должны иметь возможность использовать 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) )
...