使用SYSTEM_USER作为参数传递给
问题描述:
我创建了一个表值函数表值函数:使用SYSTEM_USER作为参数传递给
CREATE FUNCTION TestFunction
(
@username VARCHAR(80)
)
RETURNS TABLE
AS
RETURN
(
SELECT 0 AS TestValue
)
然后尝试调用它像这样:
SELECT TestValue
FROM dbo.TestFunction(SYSTEM_USER)
,但得到的错误:
附近关键字“SYSTEM_USER”
不正确的语法我甚至试图使这样的表值函数whic h不是内联的,但是我得到相同的错误。
我错过了什么吗?为什么我得到这个错误?
答
在我的2k8服务器上,我只能使用SQL Server 2000(80)兼容性级别集重现该问题,请检查2005年数据库的级别。
你也可以;
declare @su varchar(30) = SYSTEM_USER
select * from dbo.TestFunction(@su)
+0
这就是问题所在。它位于一个旧数据库,它被设置为2000兼容性。在我们的其他数据库上正常运行 您的解决方案的问题是,我不能在视图中使用它。我想我可以将它包装在不是内联的表值函数中。 – bpeikes 2012-02-17 19:19:23
适用于我: -/ – JonH 2012-02-17 18:27:43
适合我。 – 2012-02-17 18:29:25
这是昨天被问到的(虽然标题不明显相关)。 http://*.com/questions/9318684/incorrect-syntax-near-the-keyword-current-timestamp-but-only-on-one-database/ – 2012-02-17 19:35:51