我正在使用 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)