将表值函数输出传递给SQL Server 2008中的表值函数的正确方法

时间:2014-01-06 18:32:03

标签: sql sql-server sql-server-2008

我正在尝试在SQL Server 2008中创建一个名为“imageFileFromAddress”的用户定义的内联表值函数:

CREATE FUNCTION [dbo].imageFileFromAddress (@address NVARCHAR(max))
RETURNS TABLE AS RETURN(
--Guts of the function.
);

从逻辑的角度来看,回报的内容是这样的:

WITH addresses AS 
(
      SELECT * FROM [dbo].[bookPageFromAddress](@address)
)
SELECT * FROM [dbo].[imageFileFromBookPage](addresses.Book, addresses.Page)

因此,bookPageFromAddress和imageFileFromBookPage也是用户定义的内联表值函数;我需要将address参数传递给前者,后者生成一个表作为输出,并使用其行作为后者的参数,获取它生成的表,将它们拼接成一个表,然后返回结果。显然上面的实际代码对此无效,但我似乎无法理解正确的语法。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

SELECT *
FROM
  [dbo].bookPageFromAddress(@address) addresses
  outer apply [dbo].[imageFileFromBookPage](addresses.Book, addresses.Page) foo