我的存储过程的第一个参数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不支持这种类型的就地功能评估吗?
答案 0 :(得分:1)
不,它不支持这个。
此处有一个连接项请求upvote:T-SQL: use scalar functions as stored procedure parameters