SQL Server 将变量传递给存储过程中的字符串

Paw*_*l85 8 sql-server stored-procedures parameter sql-server-2012

我正在尝试将自定义字符串与一个 int 变量连接起来。Investigation is pending for ['+ @investigationidout +']. 当我将鼠标指针悬停在第一个+标志上时,它说:

'+' 附近的语法不正确

这可能吗 ?

我需要看到类似的东西:

1234 的调查正在等待中

我的查询:

    EXEC sp_wf_create_notification 
        @processid,
        @vactivityid,
        @vstepid,
        1,
        @vidColumn,
        @vidColumnTable,
        @investigationidout,
        @owner,
        'Pending Investigation',
        'Investigation is pending for  ['+ @investigationidout +'] '
        @nextstepurl,
        @vstatus OUTPUT,
        @verror OUTPUT
Run Code Online (Sandbox Code Playgroud)

Jul*_*eur 15

提供给过程的参数必须是常量或变量。不能使用函数或函数的输出或表达式。

您必须首先使用所需的表达式设置变量:

declare @investigation varchar(100);
set @investigation = 'Investigation is pending for  ['+ @investigationidout +'] ';

EXEC sp_wf_create_notification 
    @processid,
    @vactivityid,
    @vstepid,
    1,
    @vidColumn,
    @vidColumnTable,
    @investigationidout,
    @owner,
    'Pending Investigation',
    @investigation
    @nextstepurl,
    @vstatus OUTPUT,
    @verror OUTPUT
;
Run Code Online (Sandbox Code Playgroud)

对于OUTPUT变量,不要忘记OUTPUT在其名称后添加。

请参阅MSDN 指定参数

过程调用提供的参数值必须是常量或变量;函数名不能用作参数值。变量可以是用户定义的或系统变量,例如@@spid。