sql-server - SQL Server 存储过程 - 表到 XML 对象
问题描述
我需要编写一个存储过程,它可以从 SQL Server 表中的值创建以下输出:
<object>
<ValueList>
<Value value="1" text="Name" enabled="1" alias="Alias" />
<Value value="2" text="Name" enabled="1" alias="Alias" />
<Value value="3" ....
...
...
</ValueList>
</object>
我尝试使用以下过程将我的表转换为 XML:
select TXT as [text]
from lit_geography
for XML raw ('value'), root('object')
然后我得到以下
<object>
<value text="Midler tidig havn" />
<value text="Færgehavnsvej" />
<value text="Sydhavnsvej" />
<value text="Ø-Pladsen" />
<value text="Havnepladsen" />
</object>
去做:
- 我缺少父节点 Valuelist
我需要附加以下内容:
value="1", value="2" etc etc counting up for each value enabled="1" alias=""
解决方案
对于增量值,您可以使用Row_Number()
例子
Select (
Select [value] = row_number() over (Order by (select null))
,[text] = txt
,[enabled] = 1
,[alias] = 'Alias'
From lit_geography
For XML Raw('Value'),type
)
For XML Path('ValueList'),Root('object')
退货
<object>
<ValueList>
<Value value="1" text="Midler tidig havn" enabled="1" alias="Alias" />
<Value value="2" text="Færgehavnsvej" enabled="1" alias="Alias" />
<Value value="3" text="Sydhavnsvej" enabled="1" alias="Alias" />
<Value value="4" text="Ø-Pladsen" enabled="1" alias="Alias" />
<Value value="5" text="Havnepladsen" enabled="1" alias="Alias" />
</ValueList>
</object>
编辑 - 请求更新
Update lit_formfield set [Values] = (
Select (
Select [value] = row_number() over (Order by (select null))
,[text] = txt
,[enabled] = 1
,[alias] = 'Alias'
From lit_geography
For XML Raw('Value'),type
)
For XML Path('ValueList'),Root('object')
)
Where Label = 'listbox'
推荐阅读
- java - 我们如何在我的条件下正确使用嵌套的 onClickListener?
- java - 具有多个逻辑运算符的三重条件 Do-While 循环
- python - 逐步过程中的 Numpy 矩阵 concat
- exception - 异常模式必须位于匹配案例的顶层
- bigtable - BigTable CheckAndPut CompareOp.Greater 总是放置
- php - 将通配符子域重定向到 https
- javascript - 根据复选框选中状态启用或禁用目标元素
- java - 使用 Graphics2D 更新旋转的 JLabel 会导致新旧文本合并在一起
- c# - C# .NET 并行 I/O 操作(带限制)
- python - 从序列中创建所有固定长度的不连续子序列