【发布时间】:2019-06-11 13:28:51
【问题描述】:
我正在创建一个使用表值函数的视图。
这是一个简单的函数:
CREATE FUNCTION TEST(@COD INT)
RETURNS TABLE
AS
RETURN SELECT @COD COD
当我执行时:
SELECT * FROM DBO.TEST(1)
它运行完美,但是当我在函数内部进行操作时,它会显示一个错误:
SELECT * FROM DBO.TEST(1+1)
消息 102,第 15 级,状态 1,第 1 行
'+' 附近的语法不正确。
当我使用括号时也会出现错误:
SELECT * FROM DBO.TEST((1+1))
消息 102,第 15 级,状态 1,第 1 行
'(' 附近的语法不正确。
我有另一个数据库,当我执行上面的所有示例时,它运行完美。我认为它可能是服务器配置或数据库配置,但我不知道我在寻找什么。
【问题讨论】:
-
请用您正在使用的数据库标记您的问题。请注意,这在 SQL Server (dbfiddle.uk/…) 中运行良好。
-
其实问题出现在SQL Server中,一个数据库执行,另一个显示错误
-
检查两个数据库的数据库兼容性级别,并尝试使用模式名称 (
dbo.TEST) 显式地为调用添加前缀。我似乎记得旧版本对此更加挑剔。 -
谢谢。这是数据库中的兼容级别不起作用,它是 80,而在另一个数据库中它是 100。我改变了它,现在可以完美运行了!!
标签: sql sql-server function sql-server-2008-r2 table-valued-parameters