【问题标题】:Using SYSTEM_USER as a parameter to a table valued function使用 SYSTEM_USER 作为表值函数的参数
【发布时间】:2012-03-09 03:46:29
【问题描述】:

我创建了一个表值函数:

CREATE FUNCTION TestFunction
(   
    @username VARCHAR(80)
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT 0 AS TestValue
)

然后尝试这样称呼它:

SELECT TestValue
FROM dbo.TestFunction(SYSTEM_USER)

但得到错误:

关键字“SYSTEM_USER”附近的语法不正确

我什至尝试过使它成为一个非内联的表值函数,但我得到了同样的错误。

我错过了什么吗?为什么会出现此错误?

【问题讨论】:

标签: sql sql-server-2005 user-defined-functions


【解决方案1】:

在我的 2k8 服务器上,我只能在设置了 SQL Server 2000 (80) 兼容级别的情况下重现该问题,请检查 2005 数据库的级别。

同时你可以;

declare @su varchar(30) = SYSTEM_USER
select * from dbo.TestFunction(@su)

【讨论】:

  • 这就是问题所在。它在一个设置为 2000 兼容性的旧数据库上。在我们的其他数据库上运行良好。您的解决方案的问题是我无法在视图中使用它。我想我可以将它包装在一个非内联的表值函数中。
猜你喜欢
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2015-12-24
  • 2018-12-10
相关资源
最近更新 更多