使用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不是内联的,但是我得到相同的错误。

我错过了什么吗?为什么我得到这个错误?

+0

适用于我: -/ – JonH 2012-02-17 18:27:43

+0

适合我。 – 2012-02-17 18:29:25

+0

这是昨天被问到的(虽然标题不明显相关)。 http://*.com/questions/9318684/incorrect-syntax-near-the-keyword-current-timestamp-but-only-on-one-database/ – 2012-02-17 19:35:51

在我的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