2012-02-17 91 views
2

我創建了一個表值函數表值函數:使用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://stackoverflow.com/questions/9318684/incorrect-syntax-near-the-keyword-current-timestamp-but-only-on-one-database/ – 2012-02-17 19:35:51

回答

3

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

相關問題