Sql server 2008 将函数的varchar结果作为varchar参数传递是一个错误

Sql server 2008 将函数的varchar结果作为varchar参数传递是一个错误,sql-server-2008,tsql,Sql Server 2008,Tsql,存储过程的第一个参数usp_LogMessage_Begin接受varchar字段作为调用例程的名称。我想使用Object_NAME函数返回此名称,如下所示: EXEC @LogMessageId = usp_LogMessage_Begin OBJECT_NAME(@@PROCID), 'Begin deleting all records in CBH_REBATBL...' 但我得到了这个错误: Msg 102, Level 15, State 1, Procedure usp_

存储过程的第一个参数usp_LogMessage_Begin接受varchar字段作为调用例程的名称。我想使用Object_NAME函数返回此名称,如下所示:

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不支持这种类型的就地函数求值吗?

不,它不支持这种类型


此处有一个向上投票的连接项请求:

否它不支持此操作

此处有一个要对此进行upvote的连接项请求: