我正在改变function
:
ALTER FUNCTION [dbo].[fn_CalculateListing](@Listing TypeListingDatePrice READONLY)
RETURNS TypePreviousListingResult
AS
BEGIN
DECLARE @tbl_ListingDateDetails TypePreviousListingResult
RETURN @tbl_ListingDateDetails
END
GO
但抛出错误为:
Msg 137, Level 16, State 1, Procedure fn_CalculateListing, Line 6
Must declare the scalar variable "@tbl_ListingDateDetails".
即使我在使用该变量之前已经声明过,为什么还会出现错误并要求声明?
TypePreviousListingResult 是创建为 的表类型CREATE TYPE TypePreviousListingResult AS TABLE...
。
这里有两个问题:
对于多语句 TVF,您只需要
RETURN;
而不是RETURN @variable;
.您似乎无法使用用户定义的表类型 (UDTT) 作为返回表类型。这需要明确指定(即每个列名和数据类型)。
如果这是一个标量 UDF,那么在子句中仅指定数据类型名称并在
RETURNS
语句中指定变量名称的语法RETURN
将是正确的。但是,您不能从标量 UDF返回TABLE
(或)类型。CURSOR
有关更多详细信息,请参阅CREATE FUNCTION的 MSDN 页面。
您将需要以下内容:
有关传递行集的可用技术的更广泛讨论,请参阅:Erland Sommarskog的如何在存储过程之间共享数据。