【发布时间】:2017-06-02 12:26:34
【问题描述】:
我正在使用如下所示的 XML 字符串。
我必须按如下方式更新 XML 字符串:
- 如果 XML 字符串包含 1000 条或更多记录,则会终止查询
- 如果 XML 字符串包含
我该怎么做?
示例数据
<root xmlns:json="http://james.newtonking.com/projects/json">
<row json:Array="true" RowNumber="1">
<Column json:Array="true" Name="Number" Value="1" />
<Column json:Array="true" Name="HourFrom" Value="13.2" />
<Column json:Array="true" Name="HourTo" Value="13.3" />
<Column json:Array="true" Name="Rate" Value="0.895" />
</row>
<row json:Array="true" RowNumber="2">
<Column json:Array="true" Name="Number" Value="1" />
<Column json:Array="true" Name="HourFrom" Value="13.3" />
<Column json:Array="true" Name="HourTo" Value="13.4" />
<Column json:Array="true" Name="Rate" Value="0.907" />
</row>
</root>
创建临时表
CREATE TABLE #xmltable(
Id INT Identity (1,1) PRIMARY KEY CLUSTERED,
DataValue XML
);
CREATE PRIMARY XML INDEX indexratesheet ON #xmltable
(
DataValue
)
向表格中插入数据
INSERT INTO (DataValue ) VALUES(TheXMLfromAbove)
更新表格中的 XML 字符串
DECLARE @i INT 1
WHILE(@i<=1000)
BEGIN
UPDATE #xmltable SET DataValue.modify('insert <Column Name="ValidationComments" Value="{sql:variable("@validationcomments")}"></Column>
into (/root/row[@i=sql:variable("@i")])[1]')
SET @i=@i+1
END
【问题讨论】:
-
这个数据看起来很像 better-to-store-in-a-table,不是吗?是否有充分的理由将其保留在 XML 中?我会将其存储在普通表中,并在需要时创建 XML...
-
这个问题解决了吗?您需要进一步的帮助吗?请给我一个提示:如果这个问题得到了解决,您将非常好心,在(最佳)答案的投票计数器下方勾选接受检查。这将 1) 将此问题标记为已解决 2) 让追随者更容易找到最佳解决方案 3) 向回答者支付积分和 4) 向您支付积分。由于您自己已经越过了 15 点边界,因此您还被要求对贡献进行投票。这是说谢谢的方式。快乐编码!
标签: sql-server xml sql-server-2008 sql-server-2008-r2