Как мне преодолеть ограничение OpenXML в 8000 символов?

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

Вопрос

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

DECLARE @xml_text varchar(8000)

Поскольку text, 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