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不支持这种类型的就地功能评估吗?
谢谢。 (我投它。)也许在SQL 2016年... – ChadD