有人可以简单解释为什么不能将表的值用作连接函数的参数吗?
;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无关紧要。
答案 0 :(得分:0)
通过使用CROSS APPLY
来完成从表值函数发出的连接结果集。