2

OpenXML を使用して SQL に XML をロードしていますが、変数の最大値は 8000 文字であると宣言しています。

DECLARE @xml_text varchar(8000)

text であるため、ntext は openXML で使用することは許可されていません。SQL で XML 全体 (20000 文字以上) をロードするには、他にどのような方法が必要ですか?

4

2 に答える 2

5

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) )
于 2009-05-28T17:59:50.763 に答える
4

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)
于 2009-05-28T18:20:39.583 に答える