gpt4 book ai didi

sql-server - 使用 XML 更新表行 (SQL Server)

转载 作者:搜寻专家 更新时间:2023-10-30 22:18:55 25 4
gpt4 key购买 nike

我在下面生成了一个 xml 文件

SELECT * FROM case WHERE ticketNo=@ticketNo FOR XML RAW,
ELEMENTS

XML 看起来像这样:

<row>
<ticketNo>1</ticketNo>
<caller>name</caller>
<category>3</category>
<service>4</service>
<workgroup>5</workgroup>
</row>

然后我使用这个查询更新了我的表,但改变了一些值

UPDATE case
set caller = xmldoc.caller
set category = xml.category
from OpenXml(@idoc, '/row')
with (ticketNo VARCHAR(50)'./ticketNo',
caller VARCHAR(50) './caller',
category VARCHAR(50) './category') xmldoc
where dbo.tb_itsc_case.ticketNo = xmldoc.ticketNo

是否可以在不指定单个列的情况下更新表格?

最佳答案

你不能做 update如果不指定列,并且在不指定从哪些节点获取数据的情况下无法从 XML 获取数据。

如果您可以使用 SQL Server 2005 中引入的"new"XML 数据类型,则可以改为这样做。

declare @XML xml = 
'<row>
<ticketNo>1</ticketNo>
<caller>name</caller>
<category>3</category>
<service>4</service>
<workgroup>5</workgroup>
</row>'

update [case] set
[caller] = @XML.value('(/row/caller)[1]', 'varchar(50)'),
category = @XML.value('(/row/category)[1]', 'varchar(50)')
where
ticketNo = @XML.value('(/row/ticketNo)[1]', 'varchar(50)')

关于sql-server - 使用 XML 更新表行 (SQL Server),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com