我想将一个表变量作为输入传递给一个函数(在不同时间包含不同的值),以另一个表的形式返回计算结果,该表将在函数中声明。
是这样的:
CREATE FUNCTION fn_CalculateListing(@ListingData TABLE(ROWID INT,value1 INT, value2 INT))
RETURNS TABLE
AS
BEGIN
DECLARE @result TABLE
(
result1 INT,
result2 INT
)
INSERT INTO @result(result1,result2)
SELECT value1*value2, value1/value2
FROM ListingDate
RETURN @result
END
但是上面的语法在声明附近给我一个错误@ListingDate TABLE
,因为语法不正确。
以上语法是否正确,还是我应该使用另一种语法?
您不能在存储过程声明中包含表声明。如果你真的想传递数据行,创建一个表值参数类型,然后在你的存储过程中使用它。
一个更简单的表值函数怎么样,它计算 2 个整数的乘积和商:
确保使用内联用户定义函数。通过这种方式,计划优化器可以并行化您的计划(如果您有多个内核)并且您将获得更好的性能。
您可以按如下方式使用此功能: