53 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
| USE [VEPROMS]
 | ||
| GO
 | ||
| /****** Object:  UserDefinedFunction [dbo].[vefn_FindInternalTransitionsForCopy]    Script Date: 02/11/2010 06:16:45 ******/
 | ||
| SET ANSI_NULLS ON
 | ||
| GO
 | ||
| SET QUOTED_IDENTIFIER ON
 | ||
| GO
 | ||
| 	
 | ||
| /*
 | ||
| Select * from vefn_FindInternalTransitionsForCopy(10277)
 | ||
| */
 | ||
| ALTER FUNCTION [dbo].[vefn_FindInternalTransitionsForCopy](@ItemID int)
 | ||
| RETURNS @Transitions TABLE
 | ||
| (
 | ||
| 	TransitionID int,
 | ||
| 	FromID int,
 | ||
| 	TranType int,
 | ||
| 	ToID int,
 | ||
| 	RangeID int,
 | ||
| 	OldTransition 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
 | ||
| -- 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
 | ||
| )
 | ||
| insert into @Transitions
 | ||
| select TransitionID, FromID, TT.TranType, TT.ToID, TT.RangeID, CAST(TT.Config as int) --case when TT.ToID in(select ItemID from Itemz) then TT.ToID else TT.RangeID end [ToID]
 | ||
|  from Transitions TT
 | ||
|  join Items II on II.ContentID=TT.FromID
 | ||
| where (ToID in(select ItemID from Itemz) OR RangeID in(select ItemID from Itemz))
 | ||
| AND FromID in(Select ContentID from ItemZ)
 | ||
| RETURN
 | ||
| END
 |