2011-11-14 52 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不支持这种类型的就地功能评估吗?

回答

相关问题