UFN_SITE_GETPATH_BULK
Given a site, return its path within its hierarchy. Optimized for use with cross apply.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SITEID | uniqueidentifier | IN |
Definition
Copy
create function dbo.UFN_SITE_GETPATH_BULK(@SITEID uniqueidentifier)
returns table
as
return
(
with CTE_BASEUP(ID, PARENTSITEID, NAME)
as(
select
SITE.ID,
(
select
PARENTSITE.ID
from
dbo.SITE [PARENTSITE]
where
SITE.HIERARCHYPATH.GetAncestor(1) = PARENTSITE.HIERARCHYPATH
) as PARENTSITEID,
SITE.NAME
from dbo.SITE
where SITE.ID = @SITEID
union all
select
SITE.ID,
(
select
PARENTSITE.ID
from
dbo.SITE [PARENTSITE]
where
SITE.HIERARCHYPATH.GetAncestor(1) = PARENTSITE.HIERARCHYPATH
) as SITEID,
SITE.NAME
from dbo.SITE
inner join CTE_BASEUP on CTE_BASEUP.PARENTSITEID=SITE.ID
),
CTE_ROOTDOWN(ID, PARENTSITEID, NAME, PATH)
as(
select
CTE_BASEUP.ID,
CTE_BASEUP.PARENTSITEID,
CTE_BASEUP.NAME,
convert(nvarchar(1000), CTE_BASEUP.NAME)
from CTE_BASEUP
where PARENTSITEID is null
union all
select
CTE_BASEUP.ID,
CTE_BASEUP.PARENTSITEID,
CTE_BASEUP.NAME,
convert(nvarchar(1000), CTE_ROOTDOWN.PATH + '\' + CTE_BASEUP.NAME)
from CTE_BASEUP
inner join CTE_ROOTDOWN on CTE_ROOTDOWN.ID=CTE_BASEUP.PARENTSITEID
)
select ID,PATH as SITEPATH
from CTE_ROOTDOWN
where ID = @SITEID
)