当前位置: 首页 > 面试题库 >

在SQL Server中使用FOR XML PATH查询以获取XML输出以获取分层数据

唐渊
2023-03-14
问题内容

我有一个表,该表的列为NodeId,NodeName,ParentNodeId,并且我想以Xml的形式输出整个表数据,如下所示,使用SQL查询。我认为可以使用递归来在Sql
Server中使用FOR XML PATH模式来实现此目的(我使用SQL Server 2008),但不确定如何做到这一点。提前致谢

<?xml version="1.0" encoding="utf-8" ?>
<Nodes>
  <Node Id="1" Name="node1">
    <Node Id="11" Name="node11">
      <Node Id="111" Name="node111" />
      <Node Id="112" Name="node112" />
    </Node>
  </Node>
  <Node Id="2" Name="node2">
    <Node Id="21" Name="node21">
      <Node Id="211" Name="node211" />
      <Node Id="212" Name="node212" />
    </Node>
  </Node>
</Nodes>

问题答案:

我使用存储过程和递归函数解决了它。如下所示的代码。(实际上,我希望它生成一个菜单xml,因此将显示该菜单的代码。

    CREATE PROCEDURE [dbo].[usp_GetMenu]
    AS
    BEGIN
        SET NOCOUNT ON;

        SELECT  dbo.fnGetMenuItems(MenuId)
        FROM    dbo.Menu
        WHERE   ParentMenuId IS NULL
        FOR XML PATH('MenuItems')
    END
    GO

CREATE FUNCTION [dbo].[fnGetMenuItems]
(
    @MenuId int
)
RETURNS XML
WITH RETURNS NULL ON NULL INPUT
AS
BEGIN

    RETURN 
    (
        SELECT  MenuId AS "@Id"
                , [Name] AS "@Name"
                , [URL] AS "@URL"
                , [Key] AS "@Key"
                , [dbo].[fnGetMenuItems](MenuId)
        FROM    dbo.Menu
        WHERE   ParentMenuId = @MenuId
        FOR XML PATH('MenuItem'),TYPE
    )

END
GO


 类似资料:
  • 我有三个表,分别名为device_table、playlist_table和device_playlist_assoc device_playlist_assoc表用于将设备与播放列表相关联。 device_table playlist_table Device_PlayList_Assoc 所以,我想要的是那些没有播放列表的设备。我只从前端获得playlist_id作为参数。所以我想要一个sql

  • 本文向大家介绍keras 获取某层输出 获取复用层的多次输出实例,包括了keras 获取某层输出 获取复用层的多次输出实例的使用技巧和注意事项,需要的朋友参考一下 官方文档很全面,搜索功能也很好。但是如果你想单独实现某个功能,根本无从搜寻。于是我写了这个笔记。从功能出发。 两个tensor经过一个layer实例会产生两个输出。 这个代码有错误,因为最后一行没有指定lstm这个layer实例的那个输

  • 本文向大家介绍MongoDB中查询数组以获取特定值,包括了MongoDB中查询数组以获取特定值的使用技巧和注意事项,需要的朋友参考一下 要从数组中获取特定值,请使用aggregate()和$project。让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是如何在MongoDB中查询数组- 这将产生以下输出-

  • 此代码给出了预期的XML输出: 但当我试图通过更改以json格式获取数据时: @产品(MediaType.APPLICATION_XML)到@产品(媒体类型。APPLICATION_JSON),我得到一个错误: 严重:未找到媒体类型为application/json,类型为class-com的MessageBodyWriter。市场。英亩。dummyapp。测验ForTest,genericTyp

  • 我正在创建具有四个输入参数的 Web API。输入参数将在 Select 语句的 where 子句中使用。Oracle 中的字段是 URL 应该是类似于 '/api/TGSSampleDatas?房间=654

  • 问题内容: 我有一个可以对所有类别进行建模的类,可以对它们进行分层排序。 我需要按等级对所有类别进行排序(我的意思是每个父亲都跟随其子级,而父亲在每个级别上按字母顺序排序),例如可以使用oracle中的PRIOR进行分类。是否可以使用JPA查询(而非SQL查询)来执行此操作? 谢谢。 问题答案: 简短的答案是:没有,没有标准的方法可以做到这一点。 您必须使用本机sql。 您可能可以扩展Oracle