UFN_ORGANIZATIONHIERARCHY_SELECTEDNODES

Returns the all children for parent records that the user has rights to.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@PARENTNODES xml IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_ORGANIZATIONHIERARCHY_SELECTEDNODES (@PARENTNODES xml, @CURRENTAPPUSERID uniqueidentifier) 
            returns @T table 
            (
                ID uniqueidentifier
            )
            as
            begin

                declare @NODES as table (ID uniqueidentifier, ITERATION integer)

                declare @ITERATION integer
                set @ITERATION = 1

                insert into @NODES (ID, ITERATION)
                select
                T.c.value('.','uniqueidentifier') AS 'ID',
                @ITERATION
                from @PARENTNODES.nodes('ORGANIZATIONHIERARCHY/ITEM') T(c)

                declare @CONTINUE bit
                set @CONTINUE = 1;
                while @CONTINUE = 1 
                begin
                    insert into @NODES 
                    select ORGANIZATIONHIERARCHY.ID, @ITERATION + 1 
                    from dbo.ORGANIZATIONHIERARCHY 
                    where ORGANIZATIONHIERARCHY.PARENTID IN (select ID from @NODES where ITERATION = @ITERATION);

                    if @@ROWCOUNT = 0 
                        set @CONTINUE = 0;

                    set @ITERATION = @ITERATION + 1
                    --protect from runaway recursion

                    if @ITERATION > 100 set @CONTINUE = 0
                end

                insert into @T
                select 
                    N.ID
                from 
                    @NODES N
                    inner join dbo.ORGANIZATIONPOSITION OP on N.ID = OP.ID

                return;
            end