将参数值与字符串连接

问题描述

我正在使用sql Server2017。我的代码可以很好地应用于我的应用。但是,我想用一些文本/字符串发送参数值。我尝试了多种格式来组合或连接这两种格式。我已经试过了
@body = @AssociateTaskID +'您已被分配了此ID'; 还尝试了这个@body = @AssociateTaskID + +'您已经被分配了这个ID'; 我都收到语法错误。有什么方法可以做到这一点并使它起作用吗?如果是这样,语法是什么?

   Begin
      declare @AssociateTaskID int;
      declare @TaskAction_A1_assigned varchar(50);
      declare @TaskAction_A1_started varchar(100);
      declare @TaskAsction_A1_completed varchar(100);

      select @AssociateTaskID = s.AssociateTaskID from inserted s;
      select @TaskAction_A1_assigned = s.TaskAction_A1_assigned from inserted s;
  select @TaskAction_A1_started = s.TaskAction_A1_started from inserted s;
      select @TaskAsction_A1_completed = s.TaskAsction_A1_completed from inserted s;


   ------Send notification to TaskAction_A1_owner
     
    if update(TaskAction_A1_assigned)

      EXEC msdb.dbo.sp_send_dbmail
      @profile_name = 'Echo System',@recipients = 'sampleemailer2@gmail.com',@subject = 'Echo System Notification',@body = @AssociateTaskID;

解决方法

可能您需要将此int转换为字符串。 concat()的隐式字符串转换功能非常方便:

@body = concat('You have been assigned this task: ',@AssociateTaskID);
,

可以将串联分配给变量。像这样

      declare 
        @AssociateTaskID            int,@TaskAction_A1_assigned     varchar(50),@TaskAction_A1_started      varchar(100),@TaskAsction_A1_completed   varchar(100),@Message                    nvarchar(4000);

      select @AssociateTaskID = s.AssociateTaskID,@TaskAction_A1_assigned = s.TaskAction_A1_assigned,@TaskAction_A1_started = s.TaskAction_A1_started,@TaskAsction_A1_completed = s.TaskAsction_A1_completed
      from inserted s;

      select @Message=concat(cast(@AssociateTaskID as nvarchar(12)),N'you have been assigned this id');
     
    --if update(TaskAction_A1_assigned)

      EXEC msdb.dbo.sp_send_dbmail
      @profile_name = 'Echo System',@recipients = 'sampleemailer2@gmail.com',@subject = 'Echo System Notification',@body = @Message;