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