71 lines
5.6 KiB
Transact-SQL
71 lines
5.6 KiB
Transact-SQL
USE [VEPROMS]
|
|
GO
|
|
/****** Object: UserDefinedFunction [dbo].[vefn_FindAffectedTransitions] Script Date: 10/20/2010 06:57:24 ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
/*
|
|
select top 1 * from items order by itemid desc
|
|
Select
|
|
FromID,.dbo.ve_GetPathFromContentID(FromID) ContentPath
|
|
,ToID,dbo.ve_GetPath(ToID) ToPath
|
|
,RangeID,dbo.ve_GetPath(RangeID) RangePath
|
|
,cc.Text
|
|
from vefn_FindAffectedTransitions(2102) ttz
|
|
join transitions tt on ttz.TransitionID = tt.TransitionID
|
|
--join items ii on ii.ItemID = tt.fromID
|
|
join contents cc on tt.FromID = cc.contentid
|
|
*/
|
|
|
|
ALTER FUNCTION [dbo].[vefn_FindAffectedTransitions](@ItemID int)
|
|
RETURNS @Transitions TABLE
|
|
(
|
|
TransitionID int
|
|
)
|
|
WITH EXECUTE AS OWNER
|
|
AS
|
|
BEGIN
|
|
with Itemz([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as (
|
|
Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged]
|
|
,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged]
|
|
FROM [Items]
|
|
where [ItemID]=@ItemID
|
|
Union All
|
|
-- Children
|
|
select [Level] + 1,0, I.[ItemID], I.[PreviousID], P.[FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged]
|
|
,P.[ContentID] [pContentID],P.[DTS] [pDTS],P.[UserID] [pUserID],P.[LastChanged] [pLastChanged]
|
|
from Itemz Z
|
|
join Parts P on P.ContentID = Z.ContentID
|
|
join Items I on I.ItemID = P.ItemID
|
|
-- All Siblings
|
|
Union All
|
|
select [Level] ,Z.[Ordinal] +1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged]
|
|
,null,null,null,null
|
|
from Itemz Z
|
|
join Items I on I.PreviousID = Z.ItemID
|
|
--where Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID
|
|
)
|
|
, Itemz2([Level], [Ordinal], [ItemID], [PreviousID], [FromType], [ContentID], [DTS], [UserID], [LastChanged],[pContentID], [pDTS],[pUserID],[pLastChanged]) as (
|
|
Select 0 [Level], 0 [Ordinal], [ItemID], [PreviousID],0 [FromType],[ContentID],[DTS],[UserID],[LastChanged]
|
|
,0 [pContentID],[DTS] [pDTS], [UserID] [pUserID], [LastChanged] [pLastChanged]
|
|
FROM [Items]
|
|
where [ItemID]=@ItemID
|
|
-- All Siblings
|
|
Union All
|
|
select [Level] ,Z.[Ordinal] -1, I.[ItemID], I.[PreviousID], [FromType],I.[ContentID],I.[DTS],I.[UserID],I.[LastChanged]
|
|
,null,null,null,null
|
|
from Itemz2 Z
|
|
join Items I on Z.PreviousID = I.ItemID
|
|
--where Z.[Level] > 0 -- This would limit the siblings to the siblings of the children and not the initial ItemID
|
|
)
|
|
insert into @Transitions
|
|
select TransitionID from Transitions TT
|
|
where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz))
|
|
UNION
|
|
select TransitionID from Transitions TT
|
|
JOIN Itemz2 on ToID=ItemID and RangeID=ItemID and IsRange = 2
|
|
RETURN
|
|
END
|