36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
USE [VEPROMS]
 | 
						|
GO
 | 
						|
/****** Object:  UserDefinedFunction [dbo].[ve_GetTransFormat]    Script Date: 02/25/2010 09:18:41 ******/
 | 
						|
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
/* Samples 
 | 
						|
select .dbo.vefn_GetTransFormat(1,6)
 | 
						|
select .dbo.vefn_GetTransFormat(1,1)
 | 
						|
select .dbo.vefn_GetTransFormat(1,2)
 | 
						|
select .dbo.vefn_GetTransFormat(1,3)
 | 
						|
 
 | 
						|
*/
 | 
						|
ALTER FUNCTION [dbo].[vefn_GetTransFormat] (@FormatID int, @TranType int) RETURNS varchar(max)
 | 
						|
WITH EXECUTE AS OWNER
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
	
 | 
						|
  -- Walk up the Formats (inheritance) looking for the TransFormat
 | 
						|
	Declare @TransFormat as varchar(MAX)
 | 
						|
	BEGIN
 | 
						|
	with Formatz([MyOrder],[FormatID],[ParentID],[Data]) as (
 | 
						|
		Select 0,FormatID, ParentID, Data From Formats where FormatID=@FormatID
 | 
						|
	Union All
 | 
						|
		Select [MyOrder]+1,FF.FormatID, FF.ParentID, FF.Data From Formats FF
 | 
						|
			Join Formatz ZZ on ZZ.ParentID=FF.FormatID
 | 
						|
				Where ZZ.FormatID <> ZZ.ParentID)
 | 
						|
	Select  Top 1 @TransFormat=v.value('./@TransFormat', 'varchar(MAX)') 
 | 
						|
	FROM Formatz
 | 
						|
	CROSS APPLY Data.nodes('//TransTypes') TempXML(v)
 | 
						|
	where v.value('./@TransType', 'int')=@TranType
 | 
						|
	order by [MyOrder]
 | 
						|
	END
 | 
						|
	return @TransFormat
 | 
						|
END |