Sql server 2008 非动态方法对表值函数tvf执行一系列union语句
我有一个表值函数,它返回有关特定帐户的一些详细信息。像这样的。要复杂得多,但你明白了。这是一个多行TVF,如果这有区别的话(不是内联语句) 我现在需要在一系列UNION ALL语句中重复调用同一个TVF,以便返回一组存款中包含的所有帐户密钥的详细信息。有没有一种方法可以在不使用动态sql的情况下做到这一点 我目前的做法是。。。但它使用动态sql,我一直认为应该有更好的“非动态”方式 它似乎就是为了完成这项工作而设计的:Sql server 2008 非动态方法对表值函数tvf执行一系列union语句,sql-server-2008,tsql,Sql Server 2008,Tsql,我有一个表值函数,它返回有关特定帐户的一些详细信息。像这样的。要复杂得多,但你明白了。这是一个多行TVF,如果这有区别的话(不是内联语句) 我现在需要在一系列UNION ALL语句中重复调用同一个TVF,以便返回一组存款中包含的所有帐户密钥的详细信息。有没有一种方法可以在不使用动态sql的情况下做到这一点 我目前的做法是。。。但它使用动态sql,我一直认为应该有更好的“非动态”方式 它似乎就是为了完成这项工作而设计的: SELECT AccountDetails.* FROM Account C
SELECT AccountDetails.*
FROM Account
CROSS APPLY
(
select *
from dbo.TBFDetailsByAccountKey(Account.AccountKey)
) AccountDetails
WHERE Account.DepositKey = @pDepositKey
DECLARE @pResult varchar(max)
SELECT @pResult = COALESCE(@pResult + ' UNION ALL ', '') +
'SELECT * FROM dbo.TBFDetailsByAccountKey(' +
Cast(AccountKey AS VarChar(25)) + ')'
FROM Account WHERE DepositKey = @pDepositKey
EXEC(@pResult) /* execute dynamic sql created above */
SELECT AccountDetails.*
FROM Account
CROSS APPLY
(
select *
from dbo.TBFDetailsByAccountKey(Account.AccountKey)
) AccountDetails
WHERE Account.DepositKey = @pDepositKey