将参数值与字符串连接
Concatenate a parameter value with a string
我正在使用 SQL Server 2017。我的代码可以很好地满足我的应用需求。但是,我想发送一些 text/string 的参数值。我尝试了多种格式来组合或连接两者。我试过这个
@body = @AssociateTaskID + 'you have been assigned this id';
也试过这个 @body = @AssociateTaskID + + 'you have been assigned this 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;
我正在使用 SQL Server 2017。我的代码可以很好地满足我的应用需求。但是,我想发送一些 text/string 的参数值。我尝试了多种格式来组合或连接两者。我试过这个
@body = @AssociateTaskID + 'you have been assigned this id';
也试过这个 @body = @AssociateTaskID + + 'you have been assigned this 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;