我使用的OpenXML而宣告我可以上去變量最大的就是8000個字符加載XML在SQL:如何克服OpenXML的8000字符限制?
DECLARE @xml_text varchar(8000)
由於文字,NTEXT是不允許其他選擇做什麼要與OPENXML使用我必須在SQL中加載整個XML(超過20000個字符)?
我使用的OpenXML而宣告我可以上去變量最大的就是8000個字符加載XML在SQL:如何克服OpenXML的8000字符限制?
DECLARE @xml_text varchar(8000)
由於文字,NTEXT是不允許其他選擇做什麼要與OPENXML使用我必須在SQL中加載整個XML(超過20000個字符)?
你應該能夠如果您使用SQL 2005或更好的,你可以使用XML數據類型本身使用VARCHAR(最大值)(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))
呃,爲什麼在這裏使用sp_xml_prepareddocment?不要忘記用sp_xml_removedocument清理它! CAbbott的答案是更好的答案。 – ScottE 2010-10-15 00:17:49
因爲當時(一年多前),我對SQL中的XML數據類型並不熟悉。是的,CAbbott擁有更好的解決方案。 – CodeLikeBeaker 2010-10-18 14:18:13
。這樣,您就能夠避免使用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)
值得一提的是,查詢瀏覽器將截斷很長的VARCHAR處理的輸出(任何超過8000,我認爲)。如果您在查詢結果中看不到您的整個XML字符串,請不要感到驚訝 - 整個字符串仍將發送到您的應用程序。 – Daniel 2009-05-28 18:17:06