Question

Je suis un chargement XML dans SQL en utilisant OpenXML en déclarant la variable au maximum je peux aller jusqu'à 8000 est caractères:

DECLARE @xml_text varchar(8000)

Depuis texte, ntext n'est pas autorisé à utiliser avec OpenXML ce que d'autres solutions de rechange dois-je charger le XML entier (plus de 20 000 caractères) dans SQL?

Était-ce utile?

La solution

Vous devriez pouvoir utiliser varchar (max) (SQL 2005 et supérieur)

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) )

Autres conseils

Si vous utilisez SQL 2005 ou mieux, vous pouvez utiliser le type de données XML lui-même. De cette façon, vous seriez en mesure d'éviter d'utiliser 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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top