如何在表值函数中声明变量?
表值函数有两种风格。一种只是一条 select 语句,另一种可以比一条 select 语句包含更多行。
这不能有变量:
create function Func() returns table
as
return
select 10 as ColName
你必须这样做:
create function Func()
returns @T table(ColName int)
as
begin
declare @Var int
set @Var = 10
insert into @T(ColName) values (@Var)
return
end
在 SQL Server 中:
这不是一个非常好的解决方案,但是如果您有充分的理由需要使用内联 TVF 而不是 MSTVF 并且无法将变量作为参数传递到 TVF,但可以使用 SELECT 语句获取它,您可以使用一个 CTE 来访问该值,如下所示:
CREATE FUNCTION func()
RETURNS TABLE
AS
RETURN
(
-- Create a CTE table containing just the required value
WITH cte_myVar AS
(SELECT <statement to select variable>) col1
-- Use the value by selecting it from the CTE table
SELECT * FROM table1 t1
WHERE t1.col1 = (SELECT col1 FROM cte_myVar)
)