SourceCode/PROMS/SQL/vefn_GetTransFormat.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