今天整Microsoft.SQL.Server.2012遇到一个麻烦的问题,前提代码:
DECLARE @XML_CACHE XML,@FITEMID INT,@IDA INT=4
SET @XML_CACHE='<row ID="1" FItemID="131" FNumber="001" FName="中国人民银行营业处" FFullName="中国人民银行营业处" FDeleted="0" FArea="1" FIsBank="1" FModifyTime="AAAAAAAFDn4=" />
<row ID="2" FItemID="132" FNumber="011" FName="中国人民银行国库处" FFullName="中国人民银行国库处" FDeleted="0" FArea="1" FIsBank="1" FModifyTime="AAAAAAAFDoI=" />
<row ID="3" FItemID="133" FNumber="102" FName="中国工商银行" FFullName="中国工商银行" FDeleted="0" FArea="1" FIsBank="1" FModifyTime="AAAAAAAFDoY=" />
<row ID="4" FItemID="134" FNumber="103" FName="中国农业银行" FFullName="中国农业银行" FDeleted="0" FArea="1" FIsBank="1" FModifyTime="AAAAAAAFDoo=" />
<row ID="5" FItemID="135" FNumber="104" FName="中国银行" FFullName="中国银行" FDeleted="0" FArea="1" FIsBank="1" FModifyTime="AAAAAAAFDo4=" />
<row ID="6" FItemID="136" FNumber="105" FName="中国建设银行" FFullName="中国建设银行" FDeleted="0" FArea="1" FIsBank="1" FModifyTime="AAAAAAAFDpI=" />
<row ID="7" FItemID="137" FNumber="201" FName="国家开发银行" FFullName="国家开发银行" FDeleted="0" FArea="1" FIsBank="1" FModifyTime="AAAAAAAFDpY=" />
<row ID="8" FItemID="138" FNumber="202" FName="中国进出口银行" FFullName="中国进出口银行" FDeleted="0" FArea="1" FIsBank="1" FModifyTime="AAAAAAAFDpo=" />
<row ID="9" FItemID="139" FNumber="203" FName="中国农业发展银行" FFullName="中国农业发展银行" FDeleted="0" FArea="1" FIsBank="1" FModifyTime="AAAAAAAFDp4=" />'
WHILE @XML_CACHE.exist('/row[@FLAG=0]')=1
BEGIN
SELECT @IDA=Y.value('@ID','INT') FROM @XML_CACHE.nodes('/row') X(Y) WHERE Y.value('@FLAG','BIT')=0
SELECT @IDA
SET @XML_CACHE.modify('replace value of (/row/@FDeleted)[5] with sql:variable("@IDA")') ----可以执行
SET @XML_CACHE.modify('replace value of (/row/@FDeleted)[7] with 7') ----可以执行
SET @XML_CACHE.modify('replace value of (/row/@FDeleted)[sql:variable("@IDA")] with 1') ----报错
BREAK
END
SELECT @XML_CACHE
在程序中使用xml.modify.update更新如何动态调整定位指针有没有朋友指点一下