gpt4 book ai didi

sql-server - 表值函数中的公用表表达式 (CTE)

转载 作者:行者123 更新时间:2023-12-02 21:07:48 25 4
gpt4 key购买 nike

我习惯于在 MSSQL 2008 R2 中使用公用表表达式 (CTE)。我知道关于它们可以出现在哪里的语法有点繁琐,并且在普通的 T-SQL 中,在 with 表达式之前需要一个显式的分号(或开始一个新的批处理)。我想在用户定义的函数中使用 CTE。对于简单的情况,这是可行的:

create function dbo.udf_test()
returns table
with schemabinding
as
return (
with foo as (
select 5 as f
)
select f
from foo
)

但现在我想让我的函数 udf_test 更详细一些。例如在函数体内声明一个变量。首先,我需要明确的 beginend 因为函数体将不再是单个语句。所以我尝试这样创建一个:

create function dbo.udf_test()
returns table
with schemabinding
as
begin
return (
with foo as (
select 5 as f
)
select f
from foo
)
end

然而这给出了错误

Incorrect syntax near the keyword 'with'.

如果 CTE 比单个 return 语句更复杂,我如何在我的表值函数中使用它?

最佳答案

CREATE FUNCTION dbo.udf_test()
RETURNS
@return TABLE
(
f int NOT NULL
)
AS
BEGIN

WITH foo AS (
SELECT 5 AS f
)
INSERT INTO @return
SELECT f
FROM foo;

RETURN;
END

关于sql-server - 表值函数中的公用表表达式 (CTE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35183006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com