2011-11-14 79 views
1

我的存儲過程usp_LogMessage_Begin的第一個參數接受varchar字段作爲調用例程的名稱。我想用OBJECT_NAME函數返回這個名字像這樣:將函數的varchar結果作爲varchar參數傳遞給出錯誤

EXEC @LogMessageId = usp_LogMessage_Begin OBJECT_NAME(@@PROCID), 'Begin deleting all records in CBH_REBATBL...'  

但我得到這個錯誤:

Msg 102, Level 15, State 1, Procedure usp_BFAncl01_Reset, Line 22 
Incorrect syntax near 'OBJECT_NAME'. 

這將工作:

declare @SPName varchar(512) = OBJECT_NAME(@@PROCID) 
    EXEC @LogMessageId = usp_LogMessage_Begin @SPName, 'Begin deleting all records in CBH_REBATBL...'  

但我寧願不創建一個臨時變量。 T-SQL不支持這種類型的就地功能評估嗎?

回答

相關問題