OpenXML を使用して SQL に XML をロードしていますが、変数の最大値は 8000 文字であると宣言しています。
DECLARE @xml_text varchar(8000)
text であるため、ntext は openXML で使用することは許可されていません。SQL で XML 全体 (20000 文字以上) をロードするには、他にどのような方法が必要ですか?
OpenXML を使用して SQL に XML をロードしていますが、変数の最大値は 8000 文字であると宣言しています。
DECLARE @xml_text varchar(8000)
text であるため、ntext は openXML で使用することは許可されていません。SQL で XML 全体 (20000 文字以上) をロードするには、他にどのような方法が必要ですか?
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)