考虑到以下错误 - 任何想法如何优化下面的代码?
在SET子句中多次指定列名“MyXmlColumn”。在同一SET子句中不能为列分配多个值。修改SET子句以确保列只更新一次。如果SET子句更新视图的列,则列名称“MyXmlColumn”可能会在视图定义中出现两次。
UPDATE #tempTable
SET MBO.modify('replace value of (/*[local-name()=''configuration'']/*[local-name()=''play'']/text())[1] with "false"')
UPDATE #tempTable
SET MBO.modify('replace value of (/*[local-name()=''configuration'']/*[local-name()=''eat'']/text())[1] with "false"')
UPDATE #tempTable
SET MBO.modify('replace value of (/*[local-name()=''configuration'']/*[local-name()=''work'']/text())[1] with "false"')
UPDATE #tempTable
SET MBO.modify('replace value of (/*[local-name()=''configuration'']/*[local-name()=''kill'']/text())[1] with "false"')
UPDATE #tempTable
SET MBO.modify('replace value of (/*[local-name()=''configuration'']/*[local-name()=''wash'']/text())[1] with "false"')
UPDATE #tempTable
SET MBO.modify('replace value of (/*[local-name()=''configuration'']/*[local-name()=''home'']/text())[1] with "false"')
UPDATE #tempTable
SET MBO.modify('replace value of (/*[local-name()=''configuration'']/*[local-name()=''sleep'']/text())[1] with "true"'),
ToPayment = 1
这是灵魂:这是解决方案:: CREATE FUNCTION [dbo]。[SBOObject]
(
- 在此处添加函数的参数
@ var2 XML,
@ var1 nvarchar(5),
@ var3 nvarchar(5),
)
返回XML
如
BEGIN
SET @ var2.modify('declare default element namespace“http://schemas.ObjectWorld”;用sql:variable(“@ var1”)'替换(/ configuration / sleep / text())[1]的值
SET @ var2.modify('declare default element namespace“http://schemas.ObjectWorld”;将(/ configuration / work / text())[1]的值替换为sql:variable(“@ var3”)')
RETURN @var2
END
答案 0 :(得分:0)
CREATE FUNCTION [dbo].[SBOObject]
(
- 在此处添加函数的参数
@ var2 XML,
@ var1 nvarchar(5),
@ var3 nvarchar(5),
)
返回XML
如
BEGIN
SET @ var2.modify('声明默认元素命名空间" http://schemas.ObjectWorld&#34 ;;用sql:variable替换(/ configuration / sleep / text())[1]的值(& #34; @ var1的")')
SET @ var2.modify('声明默认元素命名空间" http://schemas.ObjectWorld&#34 ;;用sql:variable替换(/ configuration / work / text())[1]的值(& #34; @ var3")')
-- RETURN @var2
- END