我在Vb.net中有一个DataSet和DataTable,我已将该DataTable值转换为XML,因此我可以在SQL Server中的一个insert语句中编写所有行,而不是一次又一次地调用存储过程数十万行。
这里有示例XML和SQL脚本
DECLARE @MyXML XML
SET @MyXML = '<NewDataSet>
<Table>
<ColVal>507.6100</ColVal>
</Table>
<Table>
<ColVal>750.5800</ColVal>
</Table>
<Table>
<ColVal>328.3600</ColVal>
</Table>
<Table>
<ColVal>194.7700</ColVal>
</Table>
</NewDataSet>'
SELECT
a.b.value('Table[1]/ColVal[1]','varchar(10)') AS Fruits4
FROM @MyXML.nodes('NewDataSet') a(b)
它只返回第一行数据,我想获取所有行。
答案 0 :(得分:1)
移动您的查询,使子级别为Table
(否则Table[1]
会将结果限制为一个):
SELECT
a.b.value('ColVal[1]','varchar(10)') AS Fruits4
FROM @MyXML.nodes('NewDataSet/Table') a(b)