将函数的varchar结果作为varchar参数传递给出错误

时间:2011-11-14 22:23:40

标签: 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_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不支持这种类型的就地功能评估吗?

1 个答案:

答案 0 :(得分:1)

不,它不支持这个。

此处有一个连接项请求upvote:T-SQL: use scalar functions as stored procedure parameters