generate structured (xml) document from hierarchical table data (T-SQL)

前端 未结 2 522
无人共我
无人共我 2020-12-08 23:55

I have a table like this (simplified):

ID   |   Name  |   Parent
---------------------------------
1    |  IND    |   NULL
2    |  INS    |   5
3    |  CON           


        
2条回答
  •  Happy的楠姐
    2020-12-09 00:44

    Based on Recep's answer (see comments) I created the following solution for this problem:

    1. Create a recursive function

    CREATE function SelectChild(@key as int)
    returns xml
    begin
        return (
            select 
                IdIndustry as "@key", 
                ParentId as "@parentkey",
                IndustryCode as "@Code",
                IndustryName as "@Name",
                dbo.SelectChild(IdIndustry)
            from tblIndustryCodes
            where ParentId = @key
            for xml path('record'), type
        )
    end
    

    2. Build a SELECT statement, that calls the function

    SELECT 
        IdIndustry AS "@key", 
        '' AS "@parentkey",
        IndustryCode as "@Code",
        IndustryName as "@Name",
        dbo.SelectChild(IdIndustry)     
    FROM dbo.tblIndustryCodes
    WHERE ParentId is null
    FOR XML PATH ('record')
    

    This creates a hierarchical XML, no matter how deep the tree actually is:

    
      
      
    
    
      
        
      
    
    
      
      
    
    

提交回复
热议问题