【发布时间】:2015-09-18 12:49:04
【问题描述】:
编辑:我在这里找到了堆栈溢出的相关答案: XQuery [value()]: 'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'
我以前没有在 T-SQL 中处理过 XML,我正在修改一个现有的遗留存储过程,如果它通过反复试验得到了大部分。
但是我遇到了一个问题,即反复试验被证明是徒劳的,而且非常缓慢。认为是时候求助于堆栈溢出专家了!
这是一些 XML
有问题的存储过程接受上述 XML 作为参数:
创建过程 [dbo].[Notification_Insert] @ParametersXml XML 作为 开始XML 包含子“UserNotification”元素。我想将每个UserNotification的UserId,MessageTypeId选择到这样的表中
用户名 |消息类型 ID 13514 | 1 13514 | 2显然集合的大小是不固定的。
我目前的尝试(不起作用 - 沿着这些思路:
DECLARE @UserDetails TABLE (UserId INT, MessageTypeId INT); 插入@UserDetails (UserId, MessageTypeId) SELECT Tab.Col.value('@UserId','INT'), Tab.Col.value('@MessageTypeId','INT') FROM @ParametersXml.nodes('/Notification/UserNotifications[not(@xsi:nil = "true")][1]/UserNotification') AS Tab(Col)但这永远不会插入任何东西..
我玩这个已经有一段时间了,没有任何乐趣:(
【问题讨论】:
标签: tsql xquery-sql