有人可以为我提供一些线索或解决方案来检索如下记录集吗?
注意:我阅读了 msdn 文档,但除了脱发之外别无他法:(
只是假设我有 2 个表通过 Rid 字段连接
表 1 列:
Rid, UserName, Hash
表 2 列:
Rid, Phone, City, Email
Table1
并Table2
通过Rid
列连接。
我想使用 xml auto 或 xml explicit 或您在 SQL Server 2005 Express 中获得的任何 xml 操作获得 xml 输出。
预期输出:
<UserDetails>
<Account>
<UserName>
</UserName>
<Hash>
</Hash>
</Account>
<Personal>
<Phone>
</Phone>
<City>
</City>
</Personal>
</UserDetails>
@matt 请查看我在下面创建的过程。当您在开始时使用代码执行存储过程时,您就会知道我面临的问题
stack_getusers '<Request Type="GetUsers" CRUD="R">
<UserDetails>
<Rid></Rid>
</UserDetails>
</Request>'
CREATE PROCEDURE [dbo].[stack_getusers]
@doc NTEXT
AS
DECLARE @idoc INT
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT
t1.UserName AS "Account/UserName",
t1.Hash AS "Account/Hash",
(
SELECT t2.Phone AS "Personal/Phone",
t2.City AS "Personal/City"
FROM table1 t2
INNER JOIN table2 t3 ON t2.rid = t3.rid WHERE t2.rid = t1.rid AND (xml.Rid = '' OR t1.rid = xml.Rid)
FOR XML PATH('Personals')
)
FROM table1 t1
INNER JOIN table2 t2 ON t1.rid = t2.rid
OPENXML (@idoc,'/Request/Users',2)
WITH (Rid int) as xml
where (xml.Rid = '' OR t1.rid = xml.Rid)
FOR XML PATH ('UserDetails');
EXEC sp_xml_removedocument @idoc
试试这个:
我已经添加了第二个代码示例以回应您的评论。我不知道这是否可行,或者它是否是完成您想要的目标的最佳方式。请告诉我。