Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 非动态方法对表值函数tvf执行一系列union语句_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 非动态方法对表值函数tvf执行一系列union语句

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

我有一个表值函数,它返回有关特定帐户的一些详细信息。像这样的。要复杂得多,但你明白了。这是一个多行TVF,如果这有区别的话(不是内联语句)

我现在需要在一系列UNION ALL语句中重复调用同一个TVF,以便返回一组存款中包含的所有帐户密钥的详细信息。有没有一种方法可以在不使用动态sql的情况下做到这一点

我目前的做法是。。。但它使用动态sql,我一直认为应该有更好的“非动态”方式

它似乎就是为了完成这项工作而设计的:

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