UFN_LEVELHIERARCHY_GETNEWDESCENDANTVALUE

Return

Return Type
hierarchyid

Parameters

Parameter Parameter Type Mode Description
@NFGCAMPAIGNID uniqueidentifier IN
@PARENTID uniqueidentifier IN

Definition

Copy


   create function dbo.UFN_LEVELHIERARCHY_GETNEWDESCENDANTVALUE   
   (
      @NFGCAMPAIGNID uniqueidentifier,  
    @PARENTID uniqueidentifier = null  
   )  
   returns   
    hierarchyid  
   as   
   begin  
    declare @PARENTHIERARCHYID hierarchyid; 
    declare @RootID hierarchyid;

    if exists(select 1 from FAFNFGCAMPAIGNLEVEL where NFGCAMPAIGNID = @NFGCAMPAIGNID)
        select @RootID= min(HierarchyPath) from FAFNFGCAMPAIGNLEVEL where NFGCAMPAIGNID = @NFGCAMPAIGNID
    else
        set @RootID= hierarchyid::GetRoot();

    if @PARENTID is null  
     set @PARENTHIERARCHYID = @RootID;  
    else begin  
     select  
      @PARENTHIERARCHYID = FAFNFGCAMPAIGNLEVEL.HIERARCHYPATH  
     from  
      dbo.FAFNFGCAMPAIGNLEVEL  
     where  
      FAFNFGCAMPAIGNLEVEL.ID = @PARENTID;  
    end  

    declare @LASTCHILDHIERARCHYID hierarchyid;  

    select  
     @LASTCHILDHIERARCHYID = max(FAFNFGCAMPAIGNLEVEL.HIERARCHYPATH)  
    from  
     dbo.FAFNFGCAMPAIGNLEVEL  
    where  
     FAFNFGCAMPAIGNLEVEL.HIERARCHYPATH.GetAncestor(1) = @PARENTHIERARCHYID

    return @PARENTHIERARCHYID.GetDescendant(@LASTCHILDHIERARCHYID, null);  
   end