2013-01-18 63 views
2

我想將日期時間轉換爲nvarchar(64)。以下代碼是用作一系列存儲過程參數的一部分的代碼片段。我已經包含了有錯誤的區域。如何使用convert()函數?

near關鍵字 '轉換'

exec [email protected]=N'',@IsAuthorized=1, 
@UTCTIMESTAMP=CONVERT(NVARCHAR(64), GETUTCDATE(), 121), 
@[email protected] output 

任何想法不正確的語法有什麼不對這種語法?

+1

你需要,你不能使用的大部分功能內嵌在存儲過程的參數列表中使用一箇中間變量(例外的是'@@'系統函數,例如'@@ SPID',曾經被稱爲全局變量) –

回答

6

您需要在調用存儲過程之前執行像這樣的計算,但不能在將值傳遞給參數的過程中這樣做。例如:

DECLARE @utc NVARCHAR(64) = CONVERT(NVARCHAR(64, GETUTCDATE(), 121); 

EXEC mysproc 
    @Password = N'', 
    @IsAuthorized = 1, 
    @UTCTIMESTAMP = @utc, 
    @UserId = @SingleId OUTPUT; 

這不限於函數調用;你也不能做這樣的事情:

EXEC sp_help @objname = N'sys.' + 'tables'; 

結果:

Msg 102, Level 15, State 1, Line 1 
Incorrect syntax near '+'.