TSQL使用连接表数据作为函数参数

时间:2014-06-27 09:22:05

标签: sql-server function tsql

有人可以简单解释为什么不能将表的值用作连接函数的参数吗?

;CREATE FUNCTION "foo" ( @id INT )
RETURNS @result TABLE
(
    "value" INT
)
AS
BEGIN
    INSERT INTO @result SELECT @id * 2
    RETURN
END;

;WITH "cte" AS
(
    SELECT "id" = 1
    UNION ALL
    SELECT 2
)
SELECT 
    * 
FROM 
    cte
    , "foo"(cte."id")

最后一行抛出错误(~ctte。“id”无法绑定)。 如果它是cte或table无关紧要。

1 个答案:

答案 0 :(得分:0)

通过使用CROSS APPLY来完成从表值函数发出的连接结果集。