Table涉及运算的值参数问题

Table valued parameter problem involving operation

我正在创建一个使用 table 值函数的视图。

这是一个简单的函数:

CREATE FUNCTION TEST(@COD INT)
RETURNS TABLE
AS
RETURN SELECT @COD COD

当我执行时:

SELECT * FROM DBO.TEST(1)

它运行完美,但是当我在函数内部进行操作时它显示错误:

SELECT * FROM DBO.TEST(1+1)

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '+'.

另外当我使用括号时出现错误:

SELECT * FROM DBO.TEST((1+1))

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '('.

我有另一个数据库,当我执行上面的所有示例时它运行完美。我认为它可能是服务器配置或数据库配置,但我不知道我在找什么。

这可能是一个已在 SQL 服务器版本中修复的问题。

作为替代方案,您可以使用 APPLY 来更正此问题。

SELECT COD
FROM (SELECT 1+1 AS n)x
CROSS APPLY dbo.TEST(x.n);